【问题标题】:Updating go websocket library to latest version将 go websocket 库更新到最新版本
【发布时间】:2012-03-11 23:11:17
【问题描述】:

我在 Ubuntu 上运行 Go 编译器,使用 sudo apt-get install golang 安装

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

【问题讨论】:

    标签: websocket package go


    【解决方案1】:

    我猜 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 协议”(这里是 64b Ubuntu 10.04 上的 Chrome 18.0.1025.33 beta )

    2012-08-22 更新:上述 (1) 关于编辑 websocket 包的说明不再有效。同时更新了 websocket 包,上面的示例(主)代码现在可以编译没有问题。无论如何,我还没有测试它之后是否会做应该做的事,对不起。

    【讨论】:

    • 也感谢您。了解需要对新版本的代码进行哪些更改的更新非常有用。
    • 关于“非 websocket 协议”的注释。我在 Chrome 控制台中使用 ws = new WebSocket('ws://127.0.0.1/echo'); 命令让它正常工作。但是,是的,为了使 websocket 库编译,您需要将 ParseRequestURI 更改为 ParseRequest,如您所述。
    • 我如何获得关于回购中新项目的文档......例如新的 websocket?在 ListenAndServe 函数上,我曾经能够调用 .String() 但现在它抱怨它没有这样的函数。
    • 感谢 jnml。不知道我会不会发现。
    【解决方案2】:

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

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

    每周开发发布文档:Go Programming Language

    【讨论】:

    • 这是我真正需要的信息。非常感谢您的帮助。现在我有一个更新的版本,似乎工作正常。
    猜你喜欢
    • 2016-10-04
    • 2019-08-12
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 2022-12-22
    • 2020-06-03
    相关资源
    最近更新 更多