我可以将特定玩家连接到特定的房间,如:
socket.join('sampleroom');
并且文档说'你可以使用离开方法留下空间',如:
socket.leave('sampleroom');
但我只想让任何客户端使用io对象而不是socket。我需要这样的东西:
io.sockets(specificSocketID).leave('sampleroom');
有没有办法让客户端只使用带有io对象的套接字ID?
答案 0 :(得分: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');
答案 1 :(得分:0)
正如@tresdin所提到的,我们可以存储套接字ID,但是io对象也存储,所以实际上我们不需要它。我们可以使用特定的套接字ID,如
io.sockets.sockets[specificSocketID].leave('sampleroom');
答案 2 :(得分:0)
对于版本 > 3.0
io.sockets.sockets.get(specificSocketID).leave("sampleroom");
对于版本 <3.0
io.sockets.sockets[specificSocketID].leave("sampleroom");