Socket.io - io.sockets.clients()。长度如何获取连接客户端的唯一列表

时间:2013-11-24 01:40:12

标签: socket.io

我使用socket.io从我的客户端打开一个套接字到我的node.js服务器。我还使用io.sockets.clients().length每隔10秒将所连接用户的数量推送到所有客户端,此值的问题在于,它不检查同一用户是否已打开具有相同页面的多个选项卡。

有没有办法获取socket.io中连接的唯一客户端列表?

2 个答案:

答案 0 :(得分:1)

我建议您使用浏览器Cookie。

以下是示例:

How do I create and read a value from cookie?

答案 1 :(得分:0)

我确定你为每个人锁定了唯一的ID。

客户端代码。

//当用户连接到套接字服务器以发出类似这样的信息事件时 socket.emit('userInfo','clintUniqueID');//like mailid ID,username,anything but its unique

//当用户打开其他标签

socket.on('multipleTabs',function(data){
    //Your operation for client side    
     //example 
      alert('you are open multiple tabs');});

服务器代码:

var connection={}; //socket.io connection each user 
var usersList=[];//This list only contain unique ID for each connection
socket.on('userInfo',function(data){//emit by client (user)
 connection[socket.id]=socket; // just for connection
 var(var i=0;i<usersList.length;i++)
     {
           if(usersList[i]==data)//Here you store user unique ID like mailID,Username etc
             {
                  //user open multiple tabs  
                  //Any operation server site
                  //if you want to do any operation in  client site
                    socket.emit('multipleTabs','userAlreadyExit');



       }else
           {
                        if(i==usersList.length-1)
                           {
                               usersList.push(data);//store socket.id 
                                  }

                     }
 });

现在它可以检查它