在 socket.io 的聊天室中获取多少人

我现在有这段代码设置了缺口和余地:

io.sockets.on('connection', function(client){

var Room = "";

client.on("setNickAndRoom", function(nick, fn){

client.join(nick.room);

Room = nick.room;

client.broadcast.to(Room).emit('count', "Connected:" + " " + count);

fn({msg :"Connected:" + " " + count});

});

我想知道我如何才能有多少人连接到特定的聊天室…例如Room.length

客户端 :

function Chat(){

this.socket = null;

this.Nickname = "";

this.Room = "";

var synched = $('#syncUp');

this.Connect = function(nick, room){

socket = io.connect('http://vybeing.com:8080');

Nickname = nick;

Room = room;

//conectarse

socket.on('connect',function (data) {

socket.emit('setNickAndRoom', {nick: nick, room: room}, function(response){

$("#connection").html("<p>" + response.msg + "</p>");

});

});

}

我发现了这一点,但给出了未定义的内容:

count = io.rooms[Room].length;

回答:

对于socket.io版本> = 1.0:

请注意,房间成为具有.length1.4属性的实际类型,因此1.4.x方法从现在开始应该是稳定的。当然,禁止对该类型的API进行重大更改。

计算所有连接到的客户端’my_room’:

1.4+:

var room = io.sockets.adapter.rooms['my_room'];

room.length;

1.3.x:

var room = io.sockets.adapter.rooms['my_room'];

Object.keys(room).length;

1.0.x至1.2.x:

var room = io.adapter.rooms['my_room'];

Object.keys(room).length;

这是假设您在单个节点(而不是集群)上使用默认的Room适配器运行。如果您在集群中,事情会更加复杂。

其他相关示例:

计算连接到服务器的所有客户端:

var srvSockets = io.sockets.sockets;

Object.keys(srvSockets).length;

计算连接到名称空间的所有客户端’/chat’:

var nspSockets = io.of('/chat').sockets;

Object.keys(nspSockets).length

以上是 在 socket.io 的聊天室中获取多少人 的全部内容, 来源链接: utcz.com/qa/429415.html

回到顶部