javascript - 在 Node.js、Socket.io 数组中,socket.id 返回为未定义

标签 javascript node.js websocket socket.io

我想将socket.id存储在一个数组中,并随机选择一个连接的用户将数据传递给他们,尽管socket.id返回为未定义,我如何存储和检索socket.id?这是我的代码:

var players = [];

// Socket Connection
io.on('connection', function(socket){

    console.log('A user has connected.', socket.id);

    players.push(socket.id);

    console.log(players);

});

最佳答案

无需创建自己的 id 数组,socket.io 已经有一个可用的 id 数组,这意味着每当客户端加入或离开时它都会更新。使用io.connected :

The hash of Socket objects that are connected to this namespace, indexed by id.

您可以使用 Object.keys() 获取仅包含 id 的数组:

console.log(Object.keys(io.connected)); // array of ids

或使用 Object.values() 的套接字本身数组:

console.log(Object.values(io.connected)); // array of Socket objects

关于javascript - 在 Node.js、Socket.io 数组中,socket.id 返回为未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53602348/

相关文章:

node.js - 从 component.ts 文件加载不同的 component.html 文件?

javascript - 如何使用Ajax从本地JSON获取数据?

php - 套接字在写入前等待客户端写入

javascript - PNG 或 JPG(不是 rgb)通过 websocket 与 ArrayBuffer 没有 base64

javascript - 如何通过 javascript 从 url 读取 GET 元素?

javascript - 当我的单元测试失败时回调被调用两次

javascript - 如何避免 JavaScript 中的全局变量?

javascript - 从动态数据生成 AngularJS UI 模板

node.js - 引导 Mocha 测试套件

java - 在 Android 上发送 socket.io 消息