我知道这是非常受欢迎的问题,但我没有找到答案。 非常相似的问题: socket.IO: how can i get the socketid when i emit to a specific client in socket.io 1.0
我希望使用socketId向特定客户端发送,但是我收到错误,请参阅下文。
socket.join( gameId );
io.sockets.connected( opponent ).join( gameId );
socket.emit( 'ready', gameId, 'X', x, y );
io.sockets.connected( opponent ).emit( 'ready', gameId, 'O', x, y );
错误:
io.sockets.connected( opponent ).join( gameId );
^
TypeError: Property 'connected' of object #<Namespace> is not a function
请帮帮我。
忘了说,.join(gameId)
与io.to(socket.id)
答案 0 :(得分:1)
加入会议室
socket.on('someEventName', function(Param){
try {
socket.join('A_Temporary_Room');
} catch(err) {
console.log(err);
}
});
向此会议室中的所有成员发送消息
io.sockets.in('A_Temporary_Room').emit('ready', 'String');
<强> 修改 强>
socket.on('setId', function(SocketId) {
socket.set('socketId', SocketId, function(data){
//callback
/* Here you can maintain an array of all connected clients like
clients[SocketId].push(socket); Where clients is an object.
*/
});
});
现在要向特定客户端发出事件,请使用此
clients[SocketId].emit('PrivateMessage', 'This is a private message');
答案 1 :(得分:0)
我不确定我是否完全得到您的问题,但您可以通过发送到套接字的默认房间来发出特定的套接字ID。每个套接字都加入了一个默认房间,其中套接字的id为名称。