web-dev-qa-db-ja.com

socket.ioは、ユーザーがオンラインかオフラインかを判断します

このコードによって接続が確立または切断されたかどうかを追跡できます

console.log('a user connected');
    socket.on('disconnect', function () {
        console.log('user disconnected');
    });

まあ、それは結構です。しかし、どのユーザーが接続またはオフラインになったかをどのように判断できますか?私のクライアントはPHP/HTMLなので、ユーザーIDを持っています。

14
Shahid Karimi

クライアントに特定のユーザーIDがある場合は、それらをsocket.ioサーバーに送信する必要があります。例えば。あなたができるクライアント側で

<script>
 const socket = io();
 socket.emit('login',{userId:'YourUserID'});
</script>

そしてサーバー上にあなたは次のようなものを置きます

const users = {};
io.on('connection', function(socket){
  console.log('a user connected');
  socket.on('login', function(data){
    console.log('a user ' + data.userId + ' connected');
    // saving userId to array with socket ID
    users[socket.id] = data.userId;
  });
  socket.on('disconnect', function(){
    console.log('user ' + users[socket.id] + ' disconnected');
    // remove saved socket from users object
    delete users[socket.id];
  });
});

これで、ソケットIDとユーザーIDをペアにして操作できます。

32
galethil