我无法使用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()
不起作用或在其中使用什么的任何想法?
答案 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
的替代品