我试图计算特定房间的用户总数,并将其广播给该房间的所有人。
这是我所拥有的,但我收到了一个错误:
var clients = io.sockets.clients(cc.lowerCase(data.roomname)).length;
io.sockets.in(cc.lowerCase(data.roomname)).emit('updatetotal', { total: clients });
ERROR:
TypeError: Object #<Namespace> has no method 'clients'
感谢。
答案 0 :(得分:2)
由于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
namespace
(可选)默认= '/'
要向此会议室的用户发送消息,请使用.to
方法:
io.to(yourRoomName).emit('updatetotal', { total: getUsersInRoomNumber(yourRoomName) });
答案 1 :(得分:0)
获取房间内的总用户数
io.sockets.adapter.rooms.get(roomName).size