我正在尝试获取当前已连接的所有套接字/客户端的列表。
io.sockets 不幸的是,它不返回数组。
io.sockets
我知道我可以使用数组保留自己的列表,但是由于以下两个原因,这并不是最佳解决方案:
冗余。Socket.IO已保留此列表的副本。
Socket.IO提供了为客户端(即:)设置任意字段值的方法,socket.set('nickname', 'superman')因此,如果我要维护自己的列表,则需要跟上这些更改。
socket.set('nickname', 'superman')
救命?
在Socket.IO 0.7中,您clients在名称空间上有一个方法,该方法返回所有已连接套接字的数组。
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中获取聊天室中的人数