套接字IO:一个房间里的用户数量

使用Socket.IO v.1.3.5作为node.JS …

我怎样才能得到在一个房间里连接的真实用户( 不是会话 )的数量?

会议次数:

  var room = io.sockets.adapter.rooms[roomId] || {}; var numSocketsInRoom = Object.keys(room).length; 

但是,如果同一用户在多个浏览器选项卡中连接,则会增加numSocketInRoom,因为是会话的数量,而不是实际的用户数量。

在我的情况下,任何套接字都有用户保存在socket.userId ,但我不知道如何指示这个获得连接在一个房间里的用户数量…

谢谢!

我的解决scheme终于是这个代码,这个代码在连接isConnect = true )或离开isConnect = false )后执行的房间

 //Get the room: var room = io.sockets.adapter.rooms[roomId] || {}; //Declaration of number of users variable var numUsers; //If there are any user connected in the room, create the object if(room.user===undefined) room.user = {}; //If you join the room and have another opened session, increase the number of sessions if(room.user[socket.request.user.id] && isConnect) room.user[socket.request.user.id] += 1; //If you leave the room and have another opened session, decrease the number of sessions else if(room.user[socket.request.user.id] && !isConnect){ room.user[socket.request.user.id] -= 1; //If the number of sessions is 0, delete the user from the object if(room.user[socket.request.user.id]===0) delete room.user[socket.request.user.id]; } //If the user don't have any session and join the room, put 1 session in the object else if(isConnect){ room.user[socket.request.user.id] = 1; } //Get the number of users from room.user object numUsers = Object.keys(room.user).length;