Можете ли да задействате събитие, когато стая в socket.io се изпразни?

Предистория: Създавам изключително основен сървър за онлайн игри за много играчи, където всяка игра се съдържа в собствена стая и нейните данни за играта (включително името на стаята) в масив GAMES и искам да премахна данните за играта от масива, когато стаята вече не съществува.

Надявам се да има нещо подобно

socket.io.rooms.on('disconnect', function(roomID){
 //PSEUDO CODE// 
 //delete GAMES.getby(gameID:roomID)//
});

В противен случай планирам да прегледам масива от игри и да сравня имената на стаите с данните на io.sockets.manager.rooms, когато сокетът прекъсне връзката, и да изтрия всички несъответствия. Но съм сигурен, че трябва да има по-елегантно решение.


person tomatosource    schedule 12.11.2012    source източник


Отговори (1)


io.sockets.clients('room') ще ви даде списък със сокетите в дадена стая, така че можете да направите нещо като:

if(io.sockets.clients('room').length > 1){
     //delete room logic here
 }

Надявам се това да помогне!

person Sdedelbrock    schedule 16.11.2012
comment
Трябва да бъде <, но SO не ми позволява да правя редакции с по-малко от 6 знака. - person Keith; 11.03.2016