2012-02-21 14 views
5

Używam kompilatora Go na Ubuntu zainstalowany przy użyciu sudo apt-get install golangAktualizacja przejdź websocket biblioteki do najnowszej wersji

Mam powodzeniem opracowany i wykonany kod dla trywialny przykład serwer (Patrz 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()) 
    } 
} 

Jednak nie mogę połączyć się z serwerem za pomocą mojej wersji Chromium (16.0.912.77). Zakładam, że Chrome zaimplementował RFC 6455 Websocket (wersja 13), ale biblioteka go websocket w pakiecie Ubuntu golang jest nieaktualna.

Moje pytanie brzmi: jak mogę zaktualizować tylko pakiet websocket do najnowszej wersji?

Odpowiedz

3

Najnowsza wersja pakietu Go websocket to net/websocket pod adresem code.google.com/p/go.net/websocket, która wymaga tygodniowej wersji rozwojowej Go 1.

Dla Ubuntu golang-tygodniowo: Ubuntu PPA packages for Go.

Dla cotygodniowej dokumentacji rozwojowej: Go Programming Language.

+0

To była informacja, której naprawdę potrzebowałem. Wielkie dzięki za pomoc. Teraz mam nowszą wersję, która wydaje się działać dobrze. – ANisus

2

Domyślam się, że wersja Go w repozytorium pakietów Ubuntu to prawdopodobnie r60.3 (lub coś w tym stylu), które jest trochę stare. Użyj najnowszej co tydzień, zmienić kod do:

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

Ponadto w pakiecie websocket s/ParseRequestURI/ParseRequest/, to wydaje się działać tutaj()

Aktualizacja. Niestety, napisałem/czytać zbyt szybko, to nie wydaje się działać, strona przedstawia: "nie websocket protokół" (tutaj jest Chrome 18.0.1025.33 beta na 64b Ubuntu 10,04)

Aktualizacja 22.08.2012: powyższy() Uwaga dotycząca edytowania pakietu websocket już się nie trzyma. Pakiet websocket został w międzyczasie zaktualizowany, a przykładowy (główny) kod powyżej kompiluje teraz problemy w/o. W każdym razie, nie przetestowałem, czy potem robi to, co należy, przepraszam.

+0

I również dzięki tobie. Naprawdę przydatne było uzyskanie aktualizacji, jakie zmiany należy wprowadzić w kodzie nowej wersji. – ANisus

+0

Uwaga na temat "nie protokołu websocket". Mam go dobrze działa, używając komendy 'ws = new WebSocket ('ws: //127.0.0.1/echo');' w konsoli Chrome. Ale tak, aby skompilować bibliotekę websocket, trzeba było zmienić parametr ParseRequestURI na ParseRequest, jak wspomniano. – ANisus

+0

Jak uzyskać dokumentację przedmiotów w Repo, które są nowe ... takie jak nowy websocket? W funkcji ListenAndServe używam, aby móc wywoływać .String(), ale teraz narzeka, że ​​nie ma takiej funkcji. –

Powiązane problemy