如何检索 websocket 连接列表?

Posted

技术标签:

【中文标题】如何检索 websocket 连接列表?【英文标题】:How can I retrieve a list of websocket connections? 【发布时间】:2019-08-03 11:14:21 【问题描述】:

我正在开发一个聊天机器人项目,我们在其中打开一个 websocket 连接来传达聊天消息。

有时我们会来回收到重复的消息。我怀疑第二个客户端已启动。我想修改 boot() 函数,以便它检查现有的 websocket 连接(并取消启动或先关闭所有其他连接)。

有没有办法从原生 javascript 的角度来实现这一点?还是我可能需要从后端做点什么?

【问题讨论】:

要在客户端获取所有 websocket 连接的句柄,您可以在打开它们后立即将它们推送到客户端内存中的 websocket 全局数组中,并在任意点检查有多少WebSocket 实例被推入全局数组。从后端的角度来看,这取决于您使用的语言和框架。 我正在使用 express 和 nodejs,但我认为你提到的将实例推入某种数组可能是最好的方法。 另一种选择是围绕 WebSocket 对象进行包装;就像一个函数 currentWebsocket 在你第一次运行它时会打开一个 WS 连接,然后将它保存到一个变量中并在后续调用中返回它 【参考方案1】:

我试图通过查看代码来弄清楚它,但是甚至没有出现错误的行号,无论如何这很难。

我想这是这里的问题:

conn.send('USER_CONNECTED:' + conn.id); // send the connect message to ONE user
conn.broadcast('USER_DISCONNECTED:' + conn.id); // send the disconnect to ALL users

因此,当用户连接时,您似乎只是错过了广播呼叫。

【讨论】:

以上是关于如何检索 websocket 连接列表?的主要内容,如果未能解决你的问题,请参考以下文章

tomcat 7.0支持的最大活动websocket连接数是多少

WebSocket简介

websocket._exceptions.WebSocketProxyException:通过代理连接失败状态:503

使用 stunnel 和 Ratchet 保护 websocket。连接已关闭

移动网络中 8080 或 80 端口上的 WebSocket 连接失败

nodejs-websocket介绍