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
对象具有adapter
和connected
属性。
连接有一个所有的socket.id列表和你在中间件装饰的数据。