0

我知道这是一个非常受欢迎的问题,但我没有找到我的问题的答案。非常相似 的问题:socket.IO:当我在 socket.io 1.0 中向特定客户端发出信号时,如何获取 socketid

我想使用 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)

4

2 回答 2

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');
于 2014-08-30T12:42:55.630 回答
0

我不确定我是否完全得到你的问题,但你可以通过发射到套接字的默认房间来发射到特定的套接字 id。每个套接字都以套接字的 id 作为名称加入一个默认房间。

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

于 2014-09-18T12:15:47.397 回答