如何获得房间中的socket.io客户端数量?

yat*_*van 3 javascript node.js socket.io web webrtc

我的socket.io版本1.3.5

我想获得特定房间中的客户数量。

这是我的代码。

 socket.on('create or join', function (numClients, room) {
            socket.join(room);
    });
Run Code Online (Sandbox Code Playgroud)

我使用此代码让客户进入房间:

console.log('Number of clients',io.sockets.clients(room));
Run Code Online (Sandbox Code Playgroud)

小智 9

这适用于版本 3

io.sockets.adapter.rooms.get(roomName).size


Rah*_*bub 5

有一个计数器变量来保持计数,当有人加入时增加,当有人断开时减少。

io.on('connection', function (socket) {

var numClients = {};

socket.on('join', function (room) {
    socket.join(room);
    socket.room = room;
    if (numClients[room] == undefined) {
        numClients[room] = 1;
    } else {
        numClients[room]++;
    }
});

socket.on('disconnect', function () {
     numClients[socket.room]--;
});
Run Code Online (Sandbox Code Playgroud)


Sej*_*ejH 5

要获得一个房间中的客户数量,您可以执行以下操作:

    function NumClientsInRoom(namespace, room) {
      var clients = io.nsps[namespace].adapter.rooms[room];
      return Object.keys(clients).length;
    }
Run Code Online (Sandbox Code Playgroud)

此变量客户端将保存一个对象,其中每个客户端都是键。然后,您只需获取该对象中的客户端(键)数量。

如果尚未定义名称空间,则默认名称为“ /”。