Javascript socket.id在array Node.js、socket.io中返回为未定义

Javascript socket.id在array Node.js、socket.io中返回为未定义,javascript,node.js,websocket,socket.io,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);

我想将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数组,这意味着它会在客户端加入或离开时更新。使用:

连接到此命名空间的
Socket
对象的散列,由
id
索引

您可以使用以下方法获得一个ID数组:

或一组套接字本身,使用:


谢谢你给了我一个错误。TypeError:无法将未定义或null转换为命名空间中Function.keys()处的对象。您使用的是socket.io的哪个版本?另外,
io
在您的代码中是如何初始化的?您的
io
可能与他们在文档中使用的规范
io
对象不同。
console.log(Object.keys(io.connected)); // array of ids
console.log(Object.values(io.connected)); // array of Socket objects