一尘不染

Socket.IO-如何获取已连接套接字/客户端的列表?

node.js

我正在尝试获取当前已连接的所有套接字/客户端的列表。

io.sockets 不幸的是,它不返回数组。

我知道我可以使用数组保留自己的列表,但是由于以下两个原因,这并不是最佳解决方案:

  1. 冗余。Socket.IO已保留此列表的副本。

  2. Socket.IO提供了为客户端(即:)设置任意字段值的方法,socket.set('nickname', 'superman')因此,如果我要维护自己的列表,则需要跟上这些更改。

救命?


阅读 281

收藏
2020-07-07

共1个答案

一尘不染

在Socket.IO 0.7中,您clients在名称空间上有一个方法,该方法返回所有已连接套接字的数组。

没有名称空间的API:

var clients = io.sockets.clients();
var clients = io.sockets.clients('room'); // all users from room `room`

对于命名空间

var clients = io.of('/chat').clients();
var clients = io.of('/chat').clients('room'); // all users from room `room`

希望这对以后的人有帮助

注意: 此解决方案 适用于1.0之前的版本


2020年3月6日更新

从1.x及更高版本开始,请参考以下链接:在socket.io中获取聊天室中的人数

2020-07-07