通过Socket.IO 1.0发送到socketId的特定客户端

时间:2014-08-30 10:43:38

标签: node.js sockets socket.io socket.io-1.0

我知道这是非常受欢迎的问题,但我没有找到答案。 非常相似的问题: 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)

无法使用{{1}}

2 个答案:

答案 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为名称。

http://socket.io/docs/rooms-and-namespaces/#default-room