我正在尝试用Go学习websockets。我一直在看大猩猩websocket的例子。
我已经检查了这两个例子,展示了如何使用大猩猩websocket:
https://github.com/gorilla/websocket/tree/master/examples https://www.youtube.com/watch?v=ysAZ_oqPOo0所有这些例子都展示了如何连接到websocket服务器,发送和接收文本。但我不明白的是你怎么能只发送给一个客户。因为在现实世界的应用程序中,您将拥有用户,而我们不希望所有用户都接收到相同的消息和数据。是否有一种方法让我得到一个连接的唯一id,我可以保存在一个数据库,如redis和链接到用户id在同一数据库,然后使用该websocket id发送回一个特定的客户端,如果该用户id收到消息或通知?这就是一个人要做的事情吗?如果是这样,我该怎么做?
是否有一种方法可以让我获得连接的唯一id,我可以保存在像redis这样的数据库中,并将其链接到相同的用户id中数据库,然后使用该websocket id发送回指定的客户端,如果该用户id收到消息或通知?
当然!您可以在用户注册时自己生成Id。在connection
结构中添加userId字段
在聊天示例中,您有hub,其中包含连接池。该池用于向所有用户广播消息:
case m := <-h.broadcast:
for c := range h.connections {
select {
case c.send <- m:
default:
close(c.send)
delete(h.connections, c)
}
}
}
就是这样。你应该使用userId