我在Ubuntu上运行Go编译器,使用sudo apt-get install golang
我已经成功编译并执行了 Trivial示例服务器的代码(参见http://golang.org/pkg/websocket/#Handler)
package main
import (
"http"
"io"
"websocket"
)
// Echo the data received on the Web Socket.
func EchoServer(ws *websocket.Conn) {
io.Copy(ws, ws);
}
func main() {
http.Handle("/echo", websocket.Handler(EchoServer));
err := http.ListenAndServe(":12345", nil);
if err != nil {
panic("ListenAndServe: " + err.String())
}
}
但是,我无法使用我的Chromium版本(16.0.912.77)连接到服务器。我假设Chrome已经实现了RFC 6455 Websocket(版本13),但是Ubuntu golang 包中的go websocket库已经过时了。
所以,我的问题是:如何只将websocket包更新到最新版本?
答案 0 :(得分:3)
最新版本的Go websocket
软件包net/websocket
位于code.google.com/p/go.net/websocket
,需要Go 1每周开发版本。
对于Ubuntu golang-weekly:Ubuntu PPA packages for Go。
对于每周开发发布文档:Go Programming Language。
答案 1 :(得分:2)
我猜Ubuntu软件包存储库中Go的版本可能是r60.3(左右),现在有点旧了。使用最新的每周,将代码更改为:
package main
import (
"code.google.com/p/go.net/websocket"
"io"
"net/http"
)
// Echo the data received on the Web Socket.
func EchoServer(ws *websocket.Conn) {
io.Copy(ws, ws)
}
func main() {
http.Handle("/echo", websocket.Handler(EchoServer))
err := http.ListenAndServe(":12345", nil)
if err != nil {
panic("ListenAndServe: " + err.Error())
}
}
此外,在websocket包s/ParseRequestURI/ParseRequest/
中,它似乎在这里工作。( 1 )
更新:抱歉,我写/读得太快,似乎无法正常工作,页面显示:“不是websocket protocol”(这里是64b Ubuntu 10.04上的Chrome 18.0.1025.33 beta版) )
更新2012-08-22 :以上( 1 )关于编辑websocket包的说明不再适用。 websocket包已同时更新,上面的示例(主要)代码现在编译没有问题。无论如何,我没有测试过它后来做了什么应该是,对不起。