3

我无法让基本客户端到客户端(或真正的客户端-> 服务器-> 客户端)与 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()不起作用或用什么代替它的任何想法?

4

3 回答 3

5

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

在连接时,您将使用:

socket.join('room')

并向那个房间里的每个人发送信息:

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

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

于 2013-03-06T20:24:31.583 回答
2

尝试

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' });
}
于 2013-03-06T20:28:53.023 回答
1

您现在还可以使用...

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

作为 io.sockets.in 的替代品

于 2016-06-27T11:47:37.327 回答