首页  >  文章  >  后端开发  >  如何在 Go (Gorilla) 中向特定客户端发送有针对性的 Websocket 更新?

如何在 Go (Gorilla) 中向特定客户端发送有针对性的 Websocket 更新?

Susan Sarandon
Susan Sarandon原创
2024-11-04 12:02:02149浏览

How to Send Targeted Websocket Updates to Specific Clients in Go (Gorilla)?

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn