我正在尝试获取当前连接的所有套接字/客户端的列表。
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 及以上版本,请参考此链接:getting how many people are in a chat room in socket.io