将websocket库更新到最新版本

时间:2012-02-21 16:15:17

标签: websocket package go

我在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包更新到最新版本?

2 个答案:

答案 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包已同时更新,上面的示例(主要)代码现在编译没有问题。无论如何,我没有测试过它后来做了什么应该是,对不起。