2014-08-30 97 views
0

我知道這是非常受歡迎的問題,但我沒有找到我的問題的答案。 非常類似的問題: socket.IO: how can i get the socketid when i emit to a specific client in socket.io 1.0通過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)

回答

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'); 
+0

在我的應用程序的服務器是決定插座時,應加入room.Feel的區別! 所以再次,我有socketsID池,並且我想向特定客戶端發出一個事件「加入房間」。 請不要忽略魔術詞「具體」... – 2014-08-30 13:15:10

+0

@EldarNezametdinov更新回答。 – vbrmnd 2014-08-30 18:03:30

相關問題