socket.io 2.0.3获取所有已连接客户端ID的列表

时间:2017-11-10 21:46:48

标签: node.js express socket.io

我有一个带命名空间的socket.io v2.0.3服务器。

var io = require('socket.io')(88);

io.of('/namespace').on('connection', function(client){

      client.on('checkForOffline', function(event){

          for (var i = 0; i < event.length; i++){
              console.log(client[event[i]["id"]].connected);
              //doesn't work
          } 
      });

});
  

TypeError:无法读取未定义

的属性'connected'

我知道使用on('disconnect')但是我无法确定用户是在浏览客户区还是实际关闭窗口/已断开连接。

谢谢,帮助将不胜感激。

修改

var connectedClients = Object.keys(io.of('/namespace').clients().connected);

加载所有已连接客户端ID的数组。

要检查客户端ID是否已连接,请循环访问connectedClients[n]数组。

2 个答案:

答案 0 :(得分:0)

您的client变量不是数组。 这就是您:Cannot read property 'connected'

的原因

client变量仅保存了有关一次客户端的信息。 我有一个问题...... event变量中的内容是什么?

答案 1 :(得分:0)

io.clients((error, clients) => {
  if (error) throw error;
  console.log(clients); // => [6em3d4TJP8Et9EMNAAAA, G5p55dHhGgUnLUctAAAB]
});

来源 https://socket.io/docs/server-api/#namespace-clients-callback