Socket.io如何通过昵称列出房间中的套接字

我是新的node.js和JavaScript。 我正在使用socket.io,并试图列出在给定的房间连接的套接字。 当一个套接字连接我给它一个昵称:

io.use(function (socket, next) { var handshakeUserid = socket.request._query.userid; socket.nickname = handshakeUserid; next(); }); 

有了这个代码,我可以得到套接字的ID:

  for (socketID in io.nsps['/'].adapter.rooms[room_name].sockets) { console.log(socketID); } 

但是我怎样才能访问这个循环中的昵称属性? 尝试socketID.nickname ,或socketID[nickname]将出现错误昵称是不是定义。

我做了一些debugging,你可以通过使用以下方式访问你的字段:

  for (socketID in io.nsps['/'].adapter.rooms[room_name].sockets) { const nickname = io.nsps['/'].connected[socketID].nickname; // do stuff with nickname } 

nsps对象具有adapterconnected属性。

连接有一个所有的socket.id列表和你在中间件装饰的数据。