【发布时间】:2015-07-24 14:04:10
【问题描述】:
我正在尝试使用 Go 学习 websocket。我一直在看 gorilla websocket 的例子。
我查看了这 2 个展示如何使用 gorilla websocket 的示例:
https://github.com/gorilla/websocket/tree/master/examples
https://www.youtube.com/watch?v=ysAZ_oqPOo0
所有这些示例都展示了如何连接到 websocket 服务器、发送和接收文本。但我不明白的是你如何只能发送给一个客户。因为在现实世界的应用程序中,您将拥有用户,我们不希望所有用户都收到相同的消息和相同的数据。有没有办法让我获得连接的唯一 ID,我可以将其保存在像 redis 这样的数据库中,并将其链接到同一数据库中的用户 ID,然后使用该 websocket id 将其发送回特定的客户端(如果是)用户 ID 收到消息或通知?这是一个人将如何去做并实现这样的事情吗?如果是这样,我会怎么做?
【问题讨论】:
-
将 Gorilla hub 字段从 `connections map[*connection]bool` 更改为
connections map[string]*connection,其中字符串键是 id。将id string字段添加到连接。在创建连接和地图类型的微小更改时分配 id。完成。 -
我同意@BravadaZadada。有很多复杂的方法可以实现这一点,但您的需求是基本的。只需在您的地图中为任何新的 websocket.Connection 分配一个唯一键,当您准备写入它时调用 mapname["clientname"].WriteMessage(1, []byte(msg))