MadMyche
Ничего такого, что было бы на 100% надежным, но есть варианты, некоторые более сложные, чем другие.
1. Настройка WebSockets. Кажется излишним, если он будет использоваться только для мониторинга, если сервер имеет активное подключение к браузеру.
2. Кометы. Подход на основе AJAX, используя таймер javasript постоянно связь с сервером для создания квази длительные HTTP-запроса. Как только страница/вкладка будет закрыта, она разорвет цикл, и вы будете знать, что этот сеанс закрыт.
3. События в JavaScript onunload
и onbeforeunload
. Используйте события для запуска сообщения AJAX, уведомляющего о закрытии сеанса. Они, вероятно, должны были бы запустить оповещение/подтверждение сразу после сообщения, чтобы AJAX завершился до того, как запрос будет прерван.
4. "намерения". Те раздражающие javascripts, которые вызывают всплывающее модальное окно, когда мышь покидает область просмотра. И снова это вызовет вызов AJAX.
Richard Deeming
Но ни один из них не смог бы отличить одно от другого. "пользователь закрыл браузер", "пользователь закрыл вкладку, но сайт открыт в другой вкладке", и "пользователь перешел на другую страницу, возможно, на том же сайте". :)