我刚开始玩 socket.io 并尝试制作一些超级简单的东西,比如人们连接到房间。
我希望这能给我房间里的客户数量
io.sockets.on('connection', function (socket){
socket.on('create or join', function (channel) {
var numClients = io.sockets.clients(channel).length;
...
}
})
但它返回一个错误:Object #<Namespace> has no method 'clients'
因为在 V.1 中发生了一些变化。经过一些搜索后,我用另一个回调替换了回调:
var clients = io.sockets.adapter.rooms[channel];
var numClients = 0;
if (typeof clients !== 'undefined'){
numClients = clients.length;
}
p(numClients); // p is just a wrapper on console.log()
p(clients);
socket.join(channel);
socket.emit('created', channel);
但是无论我连接多少次,我都会得到 0 作为客户端数量:
0
undefined
0
[ hSxLuOqrm5bX4UxmAAAA: true ]
0
[ hSxLuOqrm5bX4UxmAAAA: true, '2bjYS0lrUFySPM1OAAAB': true ]
我做错了什么?
PS这里是如何获得房间里的客户数量:
var numClients = (typeof clients !== 'undefined') ? Object.keys(clients).length : 0;