socket.io客户端到客户端消息传递

我在使用socket.io的基本客户端(或真正的客户端 – >服务器 – >客户端)时遇到了麻烦。 下面是我现在的代码:

io.sockets.on('connection', function (socket) { users.push(socket.sessionId); for(userID in users) { console.log(userID); io.sockets.socket(userID).emit('message', { msg: 'New User Connected succesfully' }); } socket.emit('message', { msg: 'Connected succesfully' }); socket.on('my other event', function (data) { console.log(data); }); }); 

从我的理解,应该发送新的用户消息给每个连接的用户(单独,因为我想以后做实际的个人消息)。 相反,我最终只能得到“连接成功”的信息。 我没有从我的服务器或客户端得到任何错误或其他负面指标。

任何想法,为什么io.sockets.socket(userID).emit()不起作用或在其位置使用什么?

尝试

 users.push(socket); // without .sessionId for (var u in users) { // users[u] is now the socket console.log(users[u].id); users[u].emit('message', { msg: 'New User Connected succesfully' }); } 

Socket.io有一个房间的概念,一旦套接字join房间,它将接收所有发送到房间的信息,所以你不需要跟踪谁在房间里,处理断开连接等等。

在连接,你会使用:

 socket.join('room') 

并且发送一个消息给那个房间里的每个人:

 io.sockets.in('room').emit('event_name', data) 

有关socket.io wiki的更多信息: https : //github.com/LearnBoost/socket.io/wiki/Rooms

你现在也可以使用…

 io.to('room').emit('event_name', data); 

作为io.sockets.in的替代scheme