I am writing a chat application using websockets in Go.
There will be multiple chat rooms and the idea is to store all the websockets connected to a chat room in a Redis list.
In order to store and retrieve the websockets in Redis I have to encode/decode them and (following this question) I thought that I can use gob for that.
I am using github.com/garyburd/redigo/redis
for Redis and github.com/gorilla/websocket
as my websocket library.
My function looks like:
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())
}
}
However, I am getting this error:
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)
What does this error mean? Is the whole idea of encoding the *websocket.Conn
wrong or type conversion is required?