我使用socket.io从我的客户端打开一个套接字到我的node.js服务器。我还使用io.sockets.clients().length
每隔10秒将所连接用户的数量推送到所有客户端,此值的问题在于,它不检查同一用户是否已打开具有相同页面的多个选项卡。
有没有办法获取socket.io中连接的唯一客户端列表?
答案 0 :(得分:1)
答案 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
}
}
});
现在它可以检查它