2012-02-21 31 views
5

Tôi đang chạy trình biên dịch Go trên Ubuntu, cài đặt bằng sudo apt-get install golangĐang cập nhật đi WebSocket thư viện lên phiên bản mới nhất

tôi đã biên soạn thành công và thực thi các mã cho một dụ Trivial máy chủ (Xem 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()) 
    } 
} 

Tuy nhiên, tôi không thể kết nối với máy chủ bằng phiên bản Chromium của tôi (16.0.912.77). Tôi cho rằng Chrome đã triển khai RFC 6455 Websocket (phiên bản 13), nhưng thư viện websocket go trong gói Ubuntu golang đã lỗi thời.

Vì vậy, câu hỏi của tôi là: Làm thế nào tôi có thể cập nhật chỉ gói websocket lên phiên bản mới nhất?

Trả lời

3

Phiên bản mới nhất của gói Go websocketnet/websocket tại code.google.com/p/go.net/websocket, yêu cầu bản phát hành hàng tuần Go 1.

Đối với Ubuntu golang-weekly: Ubuntu PPA packages for Go.

Đối với tài liệu phát hành phát triển hàng tuần: Go Programming Language.

+0

Đây là thông tin tôi thực sự cần. Cảm ơn rất nhiều vì đã giúp đỡ. Bây giờ tôi có một phiên bản mới hơn có vẻ hoạt động tốt. – ANisus

2

Tôi đoán phiên bản Go trong kho gói của Ubuntu có lẽ là r60.3 (hoặc lâu hơn), hiện đã cũ một chút. Sử dụng mới nhất hàng tuần, thay đổi mã để:

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()) 
     } 
} 

Hơn nữa trong WebSocket gói s/ParseRequestURI/ParseRequest/, sau đó nó dường như làm việc ở đây()

Cập nhật:. Xin lỗi, tôi đã viết/đọc quá nhanh, nó dường như không làm việc, trang hiển thị: "không WebSocket giao thức" (ở đây là Chrome 18.0.1025.33 beta trên 64b Ubuntu 10,04)

cập nhật 2012/08/22: trên đây() lưu ý về việc chỉnh sửa gói websocket không giữ được nữa. Gói websocket đã được cập nhật trong khi đó và mã ví dụ (chính) ở trên bây giờ biên dịch các vấn đề w/o. Dù sao, tôi đã không kiểm tra nếu nó sau đó không nên làm gì hay không, xin lỗi.

+0

Và cảm ơn bạn. Nó thực sự hữu ích để có được một bản cập nhật về những thay đổi cần thiết để được thực hiện cho mã cho phiên bản mới. – ANisus

+0

Lưu ý về "giao thức không phải là giao diện web". Tôi đã làm cho nó hoạt động tốt bằng cách sử dụng lệnh 'ws = new WebSocket ('ws: //127.0.0.1/echo');' trong bảng điều khiển Chrome. Nhưng có, để làm cho biên dịch thư viện websocket, bạn cần thay đổi ParseRequestURI thành ParseRequest như bạn đã đề cập. – ANisus

+0

Làm cách nào để nhận tài liệu về các mục trong Repo mới ... chẳng hạn như websocket mới? Về chức năng ListenAndServe, tôi sử dụng để có thể gọi .String() nhưng bây giờ nó phàn nàn về nó không có chức năng như vậy. –

Các vấn đề liên quan