node.js socket.io房间用户总数
我试图计算一个特定房间中的用户总数,并将其广播给该房间中的所有人 以下是我所拥有的,但我得到了一个错误:node.js socket.io房间用户总数,node.js,socket.io,Node.js,Socket.io,我试图计算一个特定房间中的用户总数,并将其广播给该房间中的所有人 以下是我所拥有的,但我得到了一个错误: var clients = io.sockets.clients(cc.lowerCase(data.roomname)).length; io.sockets.in(cc.lowerCase(data.roomname)).emit('updatetotal', { total: clients }); 错误: TypeError: Object #<Namesp
var clients = io.sockets.clients(cc.lowerCase(data.roomname)).length;
io.sockets.in(cc.lowerCase(data.roomname)).emit('updatetotal', { total: clients });
错误:
TypeError: Object #<Namespace> has no method 'clients'
TypeError:对象#没有方法“clients”
谢谢。自从socket.io 1.0以来,其API发生了重大变化,因此旧代码可能无法工作 要获取房间中的客户端数量,可以使用此功能:
var getUsersInRoomNumber = function(roomName, namespace) {
if (!namespace) namespace = '/';
var room = io.nsps[namespace].adapter.rooms[roomName];
if (!room) return null;
var num = 0;
for (var i in room) num++;
return num;
}
或者更简洁地说:
var getUsersInRoomNumber = function(roomName, namespace) {
if (!namespace) namespace = '/';
var room = io.nsps[namespace].adapter.rooms[roomName];
if (!room) return null;
return Object.keys(room).length;
}
此函数包含两个图形:
roomName
(可选)默认值=名称空间
“/”
。至方法:
io.to(yourRoomName).emit('updatetotal', { total: getUsersInRoomNumber(yourRoomName) });
获取房间中的总用户数
io.sockets.adapter.rooms.get(roomName).size
您能再显示一些代码吗?这还不足以调试问题,但问题是用户的数量,而不是套接字(会话)的数量。如果同一用户有3个或4个浏览器选项卡,则此用户数将为3个或4个。。。但真正的联网用户只有1个。