Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PUSH] Jak poznać, że użytkownik wyłączył stronę internetową
Forum PHP.pl > Forum > Przedszkole
bpawel10
Witajcie,

mam mały problem związany z komunikacją push.

Mianowicie, gdy użytkownik się wyloguje, to w skrypcie wylogowującym mogę umieścić instrukcję wysyłającą pushem informacje, że należy go usunąć z listy osób online. Ale gdy użytkownik po prostu zamknie stronę, to w jaki sposób mam się o tym dowiedzieć?

Jedyne, co mi przychodzi na myśl, to co np. 10 sekund każdy musi się "rejestrować" czyli by było odpowiednie pole w bazie z datą ostatniej rejestracji i byłoby ono aktualizowane co 10 sekund. Wtedy wystarczyłoby sprawdzać tą datę i gdy różniłaby się od aktualnej od ponad 10 sekund, użytkownik uznawany by był za wylogowanego. Tylko że wtedy nie dość, że muszę co 10 sekund wykonywać zapytanie do bazy (przy większej liczbie użytkowników jest to chyba duże obciążenie) to jeszcze musiałbym stosować long polling celem sprawdzania którzy użytkownicy są zalogowani. Czy jest jakieś lepsze rozwiązanie tego problemu?
bpawel10
A gdyby użytkownik po prostu odłączył zasilanie od komputera? Wtedy już nie zadziała smile.gif

A co gorsze, zdarzenie onunload nie jest obsługiwane przez Chrome i Operę :/
matiit
Wiem, ale jeśli bierzesz pod uwagę wyłączenie zasilania - no to nie ma innego sposobu jak odpytywanie co jakiś czas.
bpawel10
A gdybym nie brał - jest jakiś podobny sposób, tyle że działający pod każdą przeglądarką?
matiit
Spróbowałbym z window.addEventListener("popstate", function(e) { ... });
slashynsky
Kiedyś robiąc taki skrypt jako totalny amator miałem tabele w bazie z polami user i czas, gdy user kliknął jakiś link lub odświeżył stronę czas w bazie był uaktualniany i jednocześnie kasowani użytkownicy z czasem > 5 min temu. Na pewno skuteczne smile.gif
bpawel10
A nie wiadomo, jak rozwiązał to Facebook albo Kurnik?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.