2016-04-01 111 views
1

我可以將特定播放機連接到特定的房間,如:斷開客戶

socket.join('sampleroom'); 

和文件說,「你可以用假方法留有餘地」,如:

socket.leave('sampleroom'); 

但我只想讓任何客戶端使用io對象而不是套接字。我需要這樣的東西:

io.sockets(specificSocketID).leave('sampleroom'); 

有沒有什麼辦法讓客戶端使用套接字ID與io對象的房間?

回答

0

正如@tresdin提到的,我們可以存儲插槽的ID,但是IO對象也儲存所以實際上我們並不需要它。我們可以使用特定的套接字ID,如

io.sockets.sockets[specificSocketID].leave('sampleroom'); 
1

您可以將傳入套接字保存到您自己的對象中。

var sockets = {}; 
io.on('connection',function(socket){ 
    sockets[specificSocketID] = socket; 
    io.on('disconnect',function(){ 
     delete sockets[specificSocketID]; 
    }); 
}); 
//then you can easily call a specific socket with its id 
sockets[specificSocketID].join('sampleRoom'); 
sockets[specificSocketID].leave('sampleRoom');