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

时间:2013-03-06 19:13:24

标签: html5 node.js sockets 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()不起作用或在其中使用什么的任何想法?

3 个答案:

答案 0 :(得分:3)

Socket.io有房间的概念,一旦插座加入房间,它将收到发送到房间的所有消息,因此您不需要跟踪房间里的人,处理断开连接等。 ..

在连接时,您将使用:

socket.join('room')

并向该房间的每个人发送消息:

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

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

答案 1 :(得分: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' });
}

答案 2 :(得分:0)

您现在也可以使用...

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

作为io.sockets.in

的替代品