如何在使用 socket.io 时获取房间内的客户数量?
how to get number of clients in room while using socket.io?
我想在使用 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.");
}
});
});
对于 3.0 及更高版本,您必须使用 rooms 对象的 get 函数。
使用 .size() 获取客户端数量。
所以它看起来像这样
io.sockets.adapter.rooms.get(roomName).size
之前的答案只有在至少一个用户拥有 joined/created 房间后才有效,在此之前我会报错,因为房间不存在。
我已经在另一个 .
中发布了 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
时获得房间中的 参与者人数这就是我想要做的
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.");
}
});
});
对于 3.0 及更高版本,您必须使用 rooms 对象的 get 函数。 使用 .size() 获取客户端数量。
所以它看起来像这样
io.sockets.adapter.rooms.get(roomName).size
之前的答案只有在至少一个用户拥有 joined/created 房间后才有效,在此之前我会报错,因为房间不存在。
我已经在另一个
因此,对我有用的(“socket.io”:“^4.1.2”)是使用以下方法询问房间中的客户数量:
let clientsInRoom = 0;
if (io.sockets.adapter.rooms.has(room)) clientsInRoom = io.sockets.adapter.rooms.get(room).size