2016-04-01 2 views
1

Я могу подключить конкретный игрок в конкретную комнату, как:отключения клиента от Socket.io ид

socket.join('sampleroom'); 

И документация говорит, что «вы можете использовать метод отпуска, чтобы оставить место», как:

socket.leave('sampleroom'); 

Но я просто хочу, чтобы любой клиент ушел с использованием io-объекта вместо сокета. Мне нужно что-то вроде:

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

Есть ли способ, чтобы оставить клиент из комнаты, используя только сокет идентификатора Ио объекта?

ответ

0

Как @tresdin упоминалось, мы можем хранить сокетов идентификаторами, однако Ио объект также хранится так на самом деле нам не нужно это. Мы можем использовать определенный идентификатор гнезда, такой как

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'); 
Смежные вопросы