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

如何使用Go和gorilla websocket只发送到一个客户端而不是所有客户端,go,websocket,Go,Websocket,我正在尝试用围棋学习WebSocket。我一直在看gorilla websocket的例子 我已经查看了以下两个示例,它们展示了如何使用gorilla websocket: 所有这些示例都演示了如何连接到websocket服务器、发送和接收文本。但我不明白的是你怎么能只发送给一个客户。因为在现实世界的应用程序中,您将拥有用户,我们不希望所有用户都收到相同的消息和数据。是否有一种方法可以让我获得连接的唯一id,并将其保存在redis之类的数据库中,并将其链接到同一数据库中的用户id,然后在该用

我正在尝试用围棋学习WebSocket。我一直在看gorilla websocket的例子

我已经查看了以下两个示例,它们展示了如何使用gorilla websocket:

所有这些示例都演示了如何连接到websocket服务器、发送和接收文本。但我不明白的是你怎么能只发送给一个客户。因为在现实世界的应用程序中,您将拥有用户,我们不希望所有用户都收到相同的消息和数据。是否有一种方法可以让我获得连接的唯一id,并将其保存在redis之类的数据库中,并将其链接到同一数据库中的用户id,然后在该用户id收到消息或通知时使用该websocket id发送回特定客户机?这就是一个人如何去做和实现这样的事情吗?如果是这样的话,我会怎么做

是否有一种方法可以让我获得连接的唯一id 保存在像redis这样的数据库中,并将其链接到同一数据库中的用户id 数据库,然后使用该websocket id发送回特定的 客户端,如果该用户id收到消息或通知

当然!您可以在用户注册时自行生成Id。只需在
connection
结构中添加userId字段即可

在聊天示例中,您有一个包含连接池的集线器。该池用于向所有用户广播消息:

case m := <-h.broadcast:
    for c := range h.connections {
        select {
        case c.send <- m:
        default:
            close(c.send)
            delete(h.connections, c)
        }
    }
}

case m:=将Gorilla hub字段从`connections map[*connection]bool`更改为
connections map[string]*connection
,其中string键是id。将
id string
字段添加到connection。创建连接时分配id,并对映射类型进行微小更改。完成。我同意@BravadaZadada。实现这一点有很多复杂的方法,但您的需求是基本的。只需在映射中为任何新的websocket.Connection分配一个唯一的键,并在准备写入时调用mapname[“clientname”]。WriteMessage(1,[]字节(msg))