我想知道一个房间中是否有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
});
}
});
});
});
这将检查会议室中的客户端是否具有不等于当前用户ID的acc_id,这意味着会议室中是否有2个人,但这是行不通的。
答案 0 :(得分:1)
以下代码在users
中包含array
server
。当用户连接时,它将发送一个connect event with an id
。 id
存储在users array
中。当用户disconnects
时,id
从数组中删除。因此,当用户ID在数组中时,您可以设定一个条件,用户是online
否则是offline
。
if(users.includes(id))
console.log('online')
用于检查2个ID1和ID2分别是否在线的用户
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'});