2012-02-21 14 views
5

estoy corriendo el compilador Ir en Ubuntu, instalado usando sudo apt-get install golangActualizando biblioteca ir WebSocket a la última versión

He compilado y ejecutado con éxito el código de un servidor de ejemplo trivial (Ver 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()) 
    } 
} 

Sin embargo, no puedo conectarme al servidor con mi versión de Chromium (16.0.912.77). Supongo que Chrome ha implementado el RFC 6455 Websocket (versión 13), pero que la biblioteca go websocket en el paquete de Ubuntu golang está desactualizada.

Entonces, mi pregunta es: ¿cómo puedo actualizar solo el paquete websocket a la última versión?

Respuesta

3

La última versión del paquete de websocket Go es net/websocket en code.google.com/p/go.net/websocket, que requiere la versión de desarrollo semanal Go 1.

Para Ubuntu golang-weekly: Ubuntu PPA packages for Go.

Para la documentación de la versión de desarrollo semanal: Go Programming Language.

+0

Esta fue la información que realmente necesitaba. Muchas gracias por la ayuda. Ahora tengo una versión más reciente que parece estar funcionando bien. – ANisus

2

Supongo que la versión de Go en el repositorio de paquetes de Ubuntu probablemente sea r60.3 (más o menos), que ahora es un poco vieja. Utilice la última semana, cambie el código para:

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

Por otra parte en el paquete WebSocket s/ParseRequestURI/ParseRequest/, entonces parece trabajar aquí()

actualización:. En este momento, escribí/leer demasiado rápido, no parece funcionar, la página muestra: "no WebSocket protocolo" (aquí es Chrome 18.0.1025.33 beta de Ubuntu 64b 10,04)

actualización 2012-08-22: el anterior() Nota sobre la edición del paquete websocket ya no se mantiene. El paquete websocket se ha actualizado mientras tanto y el código de ejemplo anterior (arriba) ahora compila sin problemas. De todos modos, no he probado si después hace lo que debería o no, lo siento.

+0

Y gracias a ti también. Fue realmente útil obtener una actualización sobre los cambios necesarios para el código de la nueva versión. – ANisus

+0

Una nota sobre el "protocolo no de websocket". Lo hice funcionar bien usando un comando 'ws = new WebSocket ('ws: //127.0.0.1/echo');' en la consola de Chrome. Pero sí, para hacer la compilación de la biblioteca websocket, necesitabas cambiar el ParseRequestURI a ParseRequest como mencionaste. – ANisus

+0

¿Cómo obtengo documentación sobre los artículos en el Repo que son nuevos ... como el nuevo websocket? En la función ListenAndServe, uso para poder llamar a .String() pero ahora se queja de que no tiene esa función. –

Cuestiones relacionadas