我想知道一个房间里有2个用户是否在线。如果两者都在线,那么我想告诉房间用户在线,但我找不到一种方法来知道如何告诉他们在线。
我有一个全局数组,它存储所有socket.id的acc_id,并在每次socketid更改时更新,通过这个我可以知道用户没有打开另一个选项卡,因为新选项卡提供了新客户端。
io.of('/').in(room).clients(function(error, clients) {
console.log(clients.length);
clients.forEach(function(iiid){
ds.some(function(el) {
if (el.socket_id === iiid && el.acc_id !== decrypted && clients.length >= 2) {
io.to(room).emit('isasdjfg__-dfko', {
dfhdf: "Oui", //Yes in French
pfg: room
});
}
});
});
});
这会检查房间中的客户端的 acc_id 是否不等于当前用户 ID,这意味着房间中是否有 2 个人,但这不起作用。
最佳答案
下面的代码在服务器
中包含一个users
数组
。当用户连接时,它会发送带有 id 的 connect 事件
。该id
存储在users数组
中。当用户断开
时,id
将从数组中删除。因此,您可以设置一个条件,当用户 ID 位于数组中时 user is online
else offline
。
if(users.includes(id))
console.log('online')
用于检查分别具有 id1 和 id2 的 2 个用户是否在线
if(users.includes(id1) && users.includes(id2))
console.log("both are online")
服务器
var users = [];
io.on('connection', function(socket){
socket.on('connect', function(data){
users[socket.id] = data.id;
});
socket.on('disconnect', function(){
users.splice(socket.id,1);
});
});
客户端
var socket = io();
socket.emit('connect',{id:'id'});
关于javascript - 如何知道哪个用户在线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54462074/