michat34
21.11.2012, 15:38:34
witam chcialbym napisac shoutbox. oprocz jego tradycyjnych funkcji znajdowałyby sie tam rowniez informacje o tm kto jest na shoutboxie. myslalem o zrobieniu tak, ze co sekunde jest wysylane zadanie od klienta a jak nie zostanie wyslane znaczy ze sie wylogował. ale takie cos z pewnosci mocno zamuli serwer.
1. jest jakis lepszy sposob na zrobienie tego? ktos chyba gdzies cos pisal o iframe ale nie mam pojecia jak to mozna wykorzystac.
2. do czego mozna zastosowac w php sockety, chodzi mi o praktyczne wykorzystanie w prawdziwej aplikacji www
frantic09
21.11.2012, 16:16:49
A w jaki sposób będziesz dowiadywał się, że ktoś jest na shoutboxie?
Możesz to zrobić tak, że jak ktoś wejdzie w shoutboxa lub wykaże się jakąś działalnością, wtedy zapisujesz do np bazy danych wpis o informacji
[uzytkownik][dokladny co do sekundy czas działania]
(nie mam pojęcia jak działa Twój shoutbox więc nie wiem jak rozpoznasz użytkownika... może użyć do tego ciasteczek? Każdy użytkownik po wejściu na shoutbox dostanie jakieś ID zapisane u niego w ciastkach)
Nie musisz co sekundę sprawdzać kto jest a kogo nie ma. Możesz sobie ustalić dozwolony czas nieaktywności (przykładowo 15min) i np raz na minutę sprawdzać powyższą tabelkę. Jeśli jakiś użytkownik będzie miał wpis starszy nić te przykładowe 15 minut, wtedy oznacza, że już go nie ma.
Ale, tak jak pisze, za krótko opisałeś swój shoutbox...
michat34
21.11.2012, 16:19:32
tak to zamierzam zrobic. ludzie musza byc zalogowanii by rozmawiac na shoutboxie. i myslalem o tym ze zrobie tabele SHOUTBOX i w niej po zalogowaniu sie usera bedzie dodawany nowy rekord a jak sie wyloguje to jest usuwany. z tym ze faktycznie nie do konca mam pomyslu jak sprawdzac czy ktos jest online.. twoj pomysl jest swietny i mysle ze go zastosuje chyba ze ktos ma inny pomysl + nadal nie wiem jak mozna wykorzystac do tego iframesy
b4rt3kk
21.11.2012, 16:20:46
Jeśli chodzi o listę użytkowników to lepiej zapisać nick do bazy w momencie pojawienia się / zalogowania na shoutboxie i w momencie zamknięcia strony czy też wylogowania ten nick usunąć, zaoszczędzi to dodatkowego sprawdzania co chwila, czy przypadkiem ten ktoś jeszcze ciągle siedzi. Siedzi, do momentu, póki nie pójdzie (np. w przypadku zamknięcia przeglądarki), tak w uproszczeniu. A co do wypowiedzi, to postaraj się pobierać jak najmniej danych, np. poprzez zapisywanie w sesji czasu ostatnio widzianej wiadomości przez użytkownika i z bazy pobieraj tylko nowsze wpisy, uprzednio możesz sprawdzić czy w ogóle takowe istnieją (np. poprzez COUNT), co też nieco zmniejszy zasobożerność.
michat34
21.11.2012, 16:23:47
ok dzieki bartek
zamkniecie strony mozna przechwycic window.close() czy onunload (opera ani chrome nie obsluguja)? i co jezeli ktos ma wylaczony js wtedy zdarzenie nie zadziała i uzytkownik bedzie wiecznie wpisany ze jest aktywny chociaz go dawno nie ma..
i kto wie jak uzyc iframeów?
b4rt3kk
21.11.2012, 16:49:27
Cytat(michat34 @ 21.11.2012, 17:23:47 )

ok dzieki bartek
zamkniecie strony mozna przechwycic window.close() czy onunload (opera ani chrome nie obsluguja)? i co jezeli ktos ma wylaczony js wtedy zdarzenie nie zadziała i uzytkownik bedzie wiecznie wpisany ze jest aktywny chociaz go dawno nie ma..
i kto wie jak uzyc iframeów?
to plus, obecna data minus czas ostatniej aktywności większe od pewnej ustalonej wartości to automatycznie usuwa z aktywnych użytkowników.
michat34
21.11.2012, 18:22:17
hm wlascwie to jak to jest, zalozmy ze jezeli ktos ma wylaczony js to nei moze wejscn a czat. a jak wejdzie na czat i wylaczy wtedy? to czy automatycznie nic co zwiazane z js mu nie działa, czy dopiero po przeladowaniu strony mu nie działa js? bo jezeli 1. wariant to nie ma sposobu by obejsc zamykanie strony.
i 2. pytanie jakie zdarzenie jest odpowiedzialmne za przechwycenie strony? bo to drugie nie dziala w operze ani chrome. windows.close() da sie do tego jakos wykorzystac?
na niektorych stronach widzialem takie cus: 'Ta strone zada potwierdzenia opuszczenia jej [OPUSC STRONE]'. moze to by bylo wyjsciem? ktos wgl wie jak to zrobic?
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.