我目前正在开发一个简单的 socketio 应用程序,其中我将一些参数发送到envents,我将它们存储到每个套接字中。
socket.on('add user', function (data) {
if (addedUser) return;
// we store the username in the socket session for this client.
socket.nickname = data.nickname;
socket.userId = data.userId;
...
然后我使用var io.engine.clients 获取所有socketio客户端,我试图在其他事件中获取该参数:
socket.on('new message', function (data) {
var clientsRoom = io.engine.clients;
for(var c in clientsRoom){
console.log(" Client: " + c.userId); //Error
console.log(" Client: " + c); //outputs the socket ID
console.log(" Client: " + c['userId']); //Error
}
...
但我无法获取以前为所有套接字存储的userID。 ¿我做错了什么?
感谢。
答案 0 :(得分:2)
而不是os.walk()
,您应该使用io.engine.clients
(它们不相同,io.sockets.sockets
在socket.io
之上添加额外的图层。还要确保将其视为对象,而不是数组:
engine.io