2012-02-21 160 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