如何只发送到一个客户端,而不是所有客户端使用Go和大猩猩websocket



我正在尝试用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

来发送私有消息。

相关内容

  • 没有找到相关文章

最新更新