node.js - socket.io 判断用户是在线还是离线

标签 node.js websocket socket.io real-time

我们可以通过这段代码追踪连接是建立还是断开

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

嗯,没关系。但是我们如何确定哪些用户连接或离线。我的客户端是用 PHP/HTML 编写的,所以他们有一个用户 ID。

最佳答案

如果您的客户端有特定的用户 ID,他们需要将它们发送到 socket.io 服务器。例如。在客户端你可以做

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

在服务器上你会放一些类似的东西

// server (back-end)
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 object 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 配对并使用它。

关于node.js - socket.io 判断用户是在线还是离线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32134623/

相关文章:

node.js - 使用socket.io连接node js服务器和golang服务器有什么缺点?

node.js - 为什么在 Node 中一定要使用 require 一步调用一个函数?

javascript - 理解这个websocket框架解析代码

node.js - IPython markdown 渲染失败

r - 如何使用R连接两台计算机?

javascript - 在不关闭 websockets 的情况下更改 Firefox 中的 window.location.href

javascript - 无效的帧头

node.js - Mongoose 只保存 _id 和 _v

node.js - 使用一个 bash 脚本运行两台 Node 服务器并接收控制台日志

kubernetes - 如何让 hasura websocket 在我的本地 Kubernetes 集群上工作?