Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Вывести сообщение при закрытии вкладки сайта (https://javascript.ru/forum/events/33207-vyvesti-soobshhenie-pri-zakrytii-vkladki-sajjta.html)

qwermjk 14.11.2012 08:48

Вывести сообщение при закрытии вкладки сайта
 
Подскажите какие события при этом происходят?
Где почитать?

Или как лучше отследить пользователя онлайн? (только node.js?)

Skipp 14.11.2012 09:15

onunload
onbeforeunload (Кроме Опры)

danik.js 14.11.2012 11:13

Цитата:

Сообщение от qwermjk
Или как лучше отследить пользователя онлайн? (только node.js?)


Периодически отправляем запросы через setInterval. Перестали идти запросы - значит пользователь закрыл страницу.

qwermjk 14.11.2012 11:49

Цитата:

Сообщение от danik.js (Сообщение 215889)
Периодически отправляем запросы через setInterval. Перестали идти запросы - значит пользователь закрыл страницу.

Дак это я и так реализовал!
только нужно чуть точнее знать рамки выхода из онлайн, а если setInterval ставить по времени меньше то и запросов к базе больше, а если и пользователей много то вообще рухнет всё =)
Или так и сделать?! на практике с кучей пользователей не проверял, но в теории думаю что этим бд накроется!

dmitriymar 14.11.2012 14:32

Ужасть.отслеживать как сказал Skipp,
+ создать таблицу с пользователями -лучше редис писать туда время последнего запроса, либо ид сессии если у сессий время жизни жесткое. периодически дёргать её(события вход пользователя, запрос от пользователя, выход пользователя) если тайм аут больше допустимого значит не онлайн
либо Дергать папку с сессиями -те что есть значит онлайн

qwermjk 14.11.2012 15:12

Это как?

qwermjk 14.11.2012 15:12

Цитата:

Сообщение от dmitriymar
либо Дергать папку с сессиями -те что есть значит онлайн

Это как?

dmitriymar 14.11.2012 15:12

http://php.spb.ru/php/session.html#path

danik.js 14.11.2012 23:22

Обращаю внимание, что onunload/onbeforeunload может и не произойти и пользователь так и будет висеть в онлайне, хотя уже давно закрыл страницу.

Если нужен самый быстрый метод и отсутствие ошибок, то нужно скомбинировать оба решения - отлавливать onunload + периодически отсылать сигнал подтверждения что страница пользователя открыта (скажем раз в 5 минут)


Часовой пояс GMT +3, время: 01:13.