小编典典

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

all

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

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

我知道我可以使用数组来保留我自己的列表,但不认为这是一个最佳解决方案,原因有两个:

  1. 冗余。Socket.IO 已经保存了这个列表的副本。

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

帮助?


阅读 70

收藏
2022-07-13

共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 及以上版本,请参考此链接:getting how many people are in a chat room in
socket.io

2022-07-13