栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将Websocket消息发送到Go中的特定客户端(使用Gorilla)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将Websocket消息发送到Go中的特定客户端(使用Gorilla)

聊天示例显示了如何实现广播。如果不需要广播,则聊天示例不是应用程序的理想起点。

要将消息发送到特定的websocket连接,只需使用NextWriter或WriteMessage写入该连接。这些方法不支持并发编写器,因此您可能需要使用互斥量或goroutine来确保使用单个编写器。

查找特定

*websocket.Connection
内容的简单方法是将其传递
*websocket.Connection
给需要它的代码。如果应用程序需要将其他状态与连接相关联,则定义一个类型以保留该状态并向其传递指针:

type Client struct {    conn *websocket.Conn    mu sync.Mutex    ...}

Hub
可以进行修改,以将消息发送到特定的连接,但如果不需要广播这是一个迂回路径。方法如下:

将ID字段添加到客户端:

 ID idType // replace idType with int, string, or whatever you want to use

将Gorilla中心字段从更改

connections map[*connection]bool
connectionsmap[idType]*connection

定义包含消息数据和目标客户端ID的消息类型:

type message struct {   ID idtype   data []byte}

将集线器广播字段替换为:

   send chan message

将循环中心更改为:

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) }        }    }

通过创建

message
具有适当ID的将邮件发送到特定客户端:

   hub.send <- message{ID: targetID, data: data}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/380839.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号