Я делаю простую онлайн-игру, основанную на сети. игра использует 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 );
}
});
});
});