【问题标题】:how to get number of clients in room while using socket.io?使用 socket.io 时如何获取房间内的客户端数量?
【发布时间】:2021-03-08 00:23:36
【问题描述】:

我想在使用 socket.io

时获得房间内的参与者数量

这就是我想做的事情

io.on("connection", function (socket) {
  console.log("User Connected " + socket.id);

  io.on("join", function (roomName) {
    var numClients = io.sockets.adapter.rooms[roomName].length;
    if (numClients == 0) {
      socket.join(roomName);
    } else if (numClients == 1) {
      socket.join(roomName);
    } else {
      console.log("More than 2 users.");
    }
  });
});

【问题讨论】:

    标签: socket.io webrtc


    【解决方案1】:

    对于 3.0 及更高版本,您必须将 get 函数与房间对象一起使用。 使用 .size() 获取客户端数量。

    所以它看起来像这样

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

    【讨论】:

      【解决方案2】:

      上一个答案只有在至少一个用户加入/创建房间后才有效,在此之前我会给出一个错误,因为房间不存在。

      我已经在另一个question 的io.sockets.adapter.rooms 中发布了地图。

      因此,对我有用的方法(“socket.io”:“^4.1.2”)是使用以下命令询问房间中的客户数量:

      let clientsInRoom = 0;
      if (io.sockets.adapter.rooms.has(room)) clientsInRoom = io.sockets.adapter.rooms.get(room).size
      

      【讨论】:

        猜你喜欢
        • 2015-10-06
        • 2019-03-25
        • 2018-04-06
        • 1970-01-01
        • 2015-01-05
        • 1970-01-01
        • 2015-08-17
        • 2014-07-14
        相关资源
        最近更新 更多