【问题标题】:Listing all the clients connected to a room in Socket.io version > 1列出所有连接到 Socket.io 版本 > 1 房间的客户端
【发布时间】:2014-06-11 00:47:17
【问题描述】:

在 io.sockets.clients() 方法从 Socket.io 的更高版本中被贬值之后,经过我的研究,在 socket.io 官方网站上找不到任何文档。

此外,它给出了clients() 方法的类型错误,如下所示:

TypeError: undefined 不是函数

有没有人知道如何使用更高版本的 Socket.io 列出房间中所有连接的客户端?

【问题讨论】:

  • 最好的办法是在它们连接时跟踪它们。 Socket.IO 应该是您的传输层,而不是您的会话管理器。
  • 好的。在我的项目中,我为客户端设置了 2 个套接字变量。无论如何都要为所有客户端循环这些变量并查看是否匹配?

标签: node.js socket.io migration


【解决方案1】:

要获取连接到房间的客户端的套接字 ID,请使用以下代码:

var namespace = '/';
var roomName = 'my_room_name';
for (var socketId in io.nsps[namespace].adapter.rooms[roomName]) {
    console.log(socketId);
}

编辑:

要通过套接字 ID 获取套接字,您可以试试这个:

var socket = io.sockets.connected[socketId];

【讨论】:

  • 你又一次给了我很大的帮助!我很感激。
  • 这真的很有用。你能告诉我你在哪里找到的吗?我在 socket.io 的官方网站上没有看到任何线索。 @CuriousGuy
  • @TonyChen 我也没有在官方文档中找到这个。我刚刚用 console.log 自己探索了 socket.io 对象
  • @TonyChen 探索 socket.io 源代码也有帮助:)
  • @CuriousGuy 好的~谢谢:p
【解决方案2】:

在 Socket.IO 1.4 中

获取所有已连接用户的数组:

// io.sockets.connected returns an Object with socketId as its key 

var allConnectedClients = Object.keys(io.sockets.connected);// This will return the array of SockeId of all the connected clients

获取所有客户端的计数:

var clientsCount = io.engine.clientsCount ; // This will return the count of connected clients

【讨论】:

  • 这个答案没有描述如何让所有客户在一个房间里
猜你喜欢
  • 2018-04-06
  • 2018-01-09
  • 2015-01-05
  • 2017-05-22
  • 1970-01-01
  • 2013-04-06
  • 2014-09-18
  • 2017-03-21
  • 2014-08-01
相关资源
最近更新 更多