Ich schreibe eine Chat-Anwendung mit Websockets in Go.Encoder websockets in Go mit gob
Es wird mehrere Chaträume geben und die Idee besteht darin, alle WebSockets, die mit einem Chatroom verbunden sind, in einer Redis-Liste zu speichern.
Um die WebSockets in Redis zu speichern und abzurufen, muss ich sie codieren/dekodieren und (nach this Frage) Ich dachte, dass ich Gob dafür verwenden kann.
Ich verwende github.com/garyburd/redigo/redis
für Redis und github.com/gorilla/websocket
als meine Websocket-Bibliothek.
Meine Funktion wie folgt aussieht:
func addWebsocket(room string, ws *websocket.Conn) {
conn := pool.Get()
defer conn.Close()
enc := gob.NewEncoder(ws)
_, err := conn.Do("RPUSH", room, enc)
if err != nil {
panic(err.Error())
}
}
Allerdings bin ich diesen Fehler:
cannot use ws (type *websocket.Conn) as type io.Writer in argument to gob.NewEncoder: *websocket.Conn does not implement io.Writer (missing Write method) have websocket.write(int, time.Time, ...[]byte) error want Write([]byte) (int, error)
Was bedeutet dieser Fehler bedeuten? Ist die ganze Idee der Codierung der *websocket.Conn
falsche oder Typumwandlung erforderlich?