在 Go (Gorilla) 中向特定客户端发送 Websocket 更新
尽管是 Go 新手,但您仍寻求有关实现 Websocket 通信的指导您的预输入项目。您已尝试利用 Gorilla GitHub 存储库中的示例,但在理解如何识别特定客户端并针对 Websocket 更新进行定位方面遇到了挑战。
要唯一地标识客户端,您需要修改 Gorilla hub 和客户端结构以包含身份证号字段。该字段可以是 int 或 string 等类型。
在 Hub 结构体中,将连接映射替换为使用此 ID 类型作为键、连接对象作为值的映射:
<code class="go">connections map[idType]*connection</code>
此外,更改 Hub 结构中的广播字段以使用包含消息数据和目标客户端 ID 的自定义消息类型:
<code class="go">send chan message</code>
替换负责发送广播消息的 for 循环使用以下代码将消息发送到特定客户端:
<code class="go">for { select { case client := <-h.register: h.clients[client.ID] = client case client := <-h.unregister: if _, ok := h.clients[client.ID]; ok { delete(h.clients, client.ID) close(client.send) } case message := <-h.send: if client, ok := h.clients[message.ID]; ok { select { case client.send <- message.data: default: close(client.send) delete(h.connections, client) } } } }</code>
要向特定客户端发送消息,请创建一条指定目标客户端 ID 的消息:
<code class="go">hub.send <- message{ID: targetID, data: msg}</code>
通过实现这些修改,您现在可以在 Go 应用程序中向特定客户端发送有针对性的 Websocket 更新。
以上是如何在 Go (Gorilla) 中向特定客户端发送有针对性的 Websocket 更新?的详细内容。更多信息请关注PHP中文网其他相关文章!