Закрыть браузер / Выход с сайта События - PullRequest
0 голосов
/ 16 июля 2010

В настоящее время я создаю браузерную игру с использованием ASPX, CSS и AJAX.Мне нужно знать, когда пользователь закрывает браузер или выходит из веб-сайта, например, в следующих случаях:

  1. , если игрок открывает игровую комнату и затем закрывает браузер или выходит извеб-сайт, эта комната должна быть немедленно удалена.

  2. 2 игрока играют в комнате, и один из них уходит, и игра заканчивается, а тот, кто остаётся, становится победителем.В этом случае я могу использовать таймер обратного отсчета ходов игроков, и когда таймер обратного отсчета достигает 0 - другой игрок выигрывает, но я предпочитаю, чтобы сообщение появилось, как только игрок покинул комнату, его быстрее, и когдаобратный отсчет достигает 0, есть 2 возможности - игрок ушел или игрок не отреагировал вовремя.

Кто-нибудь может сказать мне, как я могу узнать, когда пользователь закрывает браузер или выходитс моего сайта?потому что, насколько я знаю, объект Session не будет эффективным, поскольку метод Session_End запускается через несколько минут после закрытия браузера или если пользователь имеет AFK, и я не могу позволить Session_End закрыть комнату для игроков, которые являются AFK, так как ониждут присоединения большего количества игроков, и мне нужно немедленно инициировать свои события.

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

Ext.EventManager.on(window, 'beforeunload', function() {
    alert('cross-exit tab click AND cross-exit browser click');
});

Ответы [ 2 ]

1 голос
/ 16 июля 2010

Событие onbeforeunload происходит до того, как пользователь покидает страницу. Это срабатывает, когда пользователь закрывает браузер или вкладку или переходит на другую страницу, даже если эта страница находится на вашем собственном веб-сайте.

Внутри обработчика событий вы перезваниваете на сервер, говоря, что сеанс закрыт. Обратите внимание, что это должен быть аутентифицированный вызов с крошкой, чтобы избежать XSRF (т. Е. Игрок B обманывает игрока A в завершении его сеанса).

Единственное предостережение в том, что он не работает в Opera. Для Opera вы можете использовать событие onunload, но, поскольку оно срабатывает при закрытии браузера, очень трудно отправить что-либо обратно на ваш сервер в этом обработчике событий.

1 голос
/ 16 июля 2010

Обработка onbeforeunload, вероятно, будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...