2012-02-21 110 views
5

我在Ubuntu上运行围棋编译器,安装在使用sudo apt-get install golang更新去的WebSocket库,最新版本

我已经成功地编译和执行代码的简单的例子服务器(见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包到最新版本?

回答

3

Go websocket包的最新版本是net/websocketcode.google.com/p/go.net/websocket,这需要Go 1每周开发版本。

对于Ubuntu golang-weekly:Ubuntu PPA packages for Go

对于每周的开发发布文档:Go Programming Language

+0

这是我真正需要的信息。非常感谢您的帮助。现在我有一个更新的版本,似乎工作正常。 – ANisus 2012-02-21 21:38:25

2

我猜Ubuntu版本的软件包版本可能是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/,那么似乎在这里工作()

更新:对不起,我写/读得很快,它似乎并没有工作,页面显示: “没有WebSocket协议”(这里的Chrome 18.0.1025.33公测64b上的Ubuntu 10.04)

更新2012-08-22:以上()关于编辑websocket包的说明不再适用。 websocket包已经同时更新,上面的例子(主要)代码现在编译了没有问题。无论如何,我还没有测试过之后是否应该做什么,对不起。

+0

也感谢你。获得更新需要对新版本的代码进行更新非常有用。 – ANisus 2012-02-21 21:39:38

+0

关于“不是websocket协议”的说明。我在Chrome控制台中使用'ws = new WebSocket('ws://127.0.0.1/echo');'命令正常工作。但是,是的,为了使websocket库编译,您需要像前面提到的那样将ParseRequestURI更改为ParseRequest。 – ANisus 2012-02-21 22:43:22

+0

如何获取Repo中新项目的文档...例如新的websocket?在ListenAndServe函数中,我使用能够调用.String(),但现在它抱怨它没有这样的功能。 – 2012-03-19 22:27:19