使用 socket.io 时如何获取房间内的客户端数量?
Posted
技术标签:
【中文标题】使用 socket.io 时如何获取房间内的客户端数量?【英文标题】:how to get number of clients in room while using 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.");
);
);
【问题讨论】:
【参考方案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
【讨论】:
以上是关于使用 socket.io 时如何获取房间内的客户端数量?的主要内容,如果未能解决你的问题,请参考以下文章