Socket.io 通过 id 获取套接字不起作用

Posted

技术标签:

【中文标题】Socket.io 通过 id 获取套接字不起作用【英文标题】:Socket.io get socket by id not working 【发布时间】:2016-07-24 06:56:37 【问题描述】:

我正在尝试通过其 ID 访问套接字。我看过this 和this *** 帖子。然而,

io.sockets.connected[socket.id]

返回未定义。

这也行不通:

io.to(socket.id).emit("myMessage");

Socket 连接到一个命名空间(socket.id 返回 /playNS#1HhBtUM-6O_YsRwmAAAF)并且 socket.io 版本是 1.4.5。我做错了什么?

【问题讨论】:

应该可以正常工作——我在 github 项目中有类似的代码,我唯一要做的就是跟踪对象中的 socketID 和 sessionID 【参考方案1】:

如果套接字连接到命名空间,socket.id 的第一部分包含该命名空间(例如 /playNS#1HhBtUM-6O_YsRwmAAAF),但该套接字的 io.sockets.connected 属性将是 /#1HhBtUM-6O_YsRwmAAAF

为了正确检索我使用io.of('/namespace').connected[socket.id] 的套接字。

同样,io.of("/namespace").to(socket.id).emit("myMessage"); 发送消息

【讨论】:

以上是关于Socket.io 通过 id 获取套接字不起作用的主要内容,如果未能解决你的问题,请参考以下文章

当存储在变量中时,Socket.io 发射到 socket.id 不起作用

socket.io 身份验证在第一个连接上不起作用

使用 Socket.io 在 React Native 移动应用程序中不起作用

通过 PHP 连接到 socket.io(nodejs)

如何在socket.io中的断开事件上获取断开连接的客户端的套接字ID

socket.io 和按对象 id 过滤 mongodb