Как я могу обработать событие Close в Socket.io?

Я делаю простую онлайн-игру, основанную на сети. игра использует Socket.io для связи друг с другом. но я столкнулся с проблемой.

подумайте о следующей ситуации. Я запустил сервер Socket.io. один игрок делает комнату, а другой игрок присоединяется к комнате. они играли в игру какое-то время .. но один игрок так зол и закроет вкладку игры.

в этой ситуации, как я могу получить событие, при котором один клиент закрыл браузер на стороне сервера?

согласно поиску в Google, люди говорят так: «использовать событие закрытия браузера, такое как onBeforeUnload»

но я знаю, что все браузеры не поддерживают событие onBeforeUnload. так что я хочу решение о проверка события отключения клиента на СТОРОНЕ СЕРВЕРА.

в серверной консоли Socket.io (nodeJS), когда клиентское соединение закрывается, консоль сообщает следующее:

debug - discarding transport

Моя версия nodeJS - 0.4.10, а версия Socket.io - 0.8 .7. и оба работают в Linux.

Кто-нибудь может помочь?

Сокращенные коды здесь:

var io = require ( "socket.io" ).listen ( 3335 );
io.sockets.on ( "connection" , function ( socket )
{
  socket.on ( "req_create_room" , function ( roomId ) 
  {
    var socketInstance = io
    .of ( "/" + roomId )
    .on ( "connection" , function ( sock )
    {
       sock.on ( "disconnect" , function () 
       {
          // i want this socket data always displayed...
          // but first-connected-client doesn't fire this event ..
          console.log ( sock );
       }
    });
  });
});
12
задан Jindong Jung 1 February 2012 в 09:05
поделиться