Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Refresh - Nowa wiadomość
Forum PHP.pl > Forum > PHP
diamondking
Witam mam na stronie system wiadomości.
Ale to czy jest nowa dowiemy sie dopiero po odświeżeniu strony.
A jak zrobić by automatycznie odświeżała się każda strona kiedy nadejdzie wiadmość ?
rad11
Uzyj AJAXA albo Websocket.
Dejmien_85
Tak jak kolega wyżej napisał, masz dwie opcje:

1. Łatwiejsza, AJAX.
Tutaj wykorzystujesz JavęScript, najprościej jest zaciągnąć do tego gotową bibliotekę jQuery (jest bardzo prosta i poznanie podstaw zajmie Ci chwilę).
Koncepcja jest taka, że w przeglądarce odpalasz skrypt JavaScript, który co X czas wykonuje request "w tle", odpytując serwer o nowe wiadomości.
Jeśli są nowe wiadomości, wtedy robisz update widoku (przy pomocy jQuery).

Ustawiasz gdzieś na serwerze skrypt (lub jakiś kontroler jeśli używasz frameworka), następnie przy pomocy jQuery wysyłasz do tego skryptu request
"w tle" (użytkownik tego nie widzi, strona nie jest refreshowana), jQuery odpala skrypt PHP, wtedy PHP zwraca wynik jQuery (to co dasz w returnie, to dojdzie do jQuery),
i decydujesz co zrobić.

2. WebSockety - to już wyższa pierdolencja.
Tutaj utrzymujesz stale połączenie z przeglądarką i na bieżąco otrzymujesz informacje. Ten temat jest troszkę grubszy i musiałbyś się bardziej napracować.

Polecam zacząć od AJAX-a, a później w miarę sił spróbować WebSocketów. ; )
KsaR
Nie polecam niczego z powyższych jeśli piszesz stronę która powinna być przystosowana także pod urządzenia mobilne, a nie używasz wcześniej na stronie ajax/jQuery to...

Lepiej poczytaj o XMLHttpRequest, na im i tak się opierają w.w. biblioteki (ajax itp) tyle że mniej zamuli.

Ostatnio pisałem taki skrypt i waży mniej niż 0,90 kB po kompresji + nie muli na telefonach nawet.
Przy okazji: lepiej zmieniać tytuł niż odświeżać (document.title='Nowe wiadomości')
!*!
@Ksar - już dawno takich bzdur nikt tu nie pisał.

Jest też 3 opcja i nazywa się "long polling".
KsaR
Cytat(!*! @ 5.02.2015, 12:50:13 ) *
@Ksar - już dawno takich bzdur nikt tu nie pisał.

Jest też 3 opcja i nazywa się "long polling".


O ile to o mnie to tak się składa że coraz więcej użytkowników przegląda sieć przez urządzenia mobilne (także ja), i na każdą stronę gdzie wchodzę, a jest jquery - zamula, więc gdzie bzdura?, rozumiem że masz najlepszy sprzęty z internetem LTE i na im testujesz swoje dzieła nie patrząc na innych?
!*!
@up - jeśli strona Ci zamula i uważasz, że to wina biblioteki, to prawdopodobnie zrobiłeś coś źle, a nawet bardzo źle.
KsaR
Cytat(!*! @ 5.02.2015, 12:59:57 ) *
@up - jeśli strona Ci zamula i uważasz, że to wina biblioteki, to prawdopodobnie zrobiłeś coś źle, a nawet bardzo źle.


Nie piszę że każda... (Np. To forum nie tnie mi w ogóle na chrome-na tablecie),
Jednak są serwisy które mi zacina np. Słynne na tym forum jsfiddle.

A ja pisze strony co nawet na słabych telefonach nie ścinają się.

Łącze do tego mam raczej słabe, ale nawet gdyby to i tak przeglądarki cacheują skrypty, a skoro mi nadal tną takie strony to.....? (Opere mobile raz mi wyłączyło).
!*!
Tylko, że to nie jest wina biblioteki, ajax/xhr, tylko Twoja, lub osób które pisały te strony, ewentualnie Twojego operatora. Większość osób wpycha JS przed załadowaniem, zamiast PO, a że operują na DOM, to są spowolnienia. Tak samo może być w przypadku usługodawcy który ma problemy z połączeniem się z serwerami jquery lub google, jeśli dałeś JS przed, to czasami nawet nie zobaczysz strony, bo przeglądarka czeka, aż zakończy się żądanie pobierania pliku, ale nie ma to nic wspólnego z biblioteką.
Dejmien_85
Oj, Ksar, strzeliłeś sobie w stopę teraz swoimi poglądami. tongue.gif
KsaR
Cytat(Dejmien_85 @ 5.02.2015, 19:28:01 ) *
Oj, Ksar, strzeliłeś sobie w stopę teraz swoimi poglądami. tongue.gif


Hehe, i tak jestem zdania że dla średnio(ledwo) rozbudowanych stron lepiej dla jednej rzeczy pliczek 0,90 kB z XH, niż (60~kB?) ajax żeby odświeżyć stronę(i chyba nic więcej?) biggrin.gif co innego gdyby strona była naprawdę dość rozbudowana, i zaincludowanie ajaxa by przyniosło zyski(przy dużej stronie...),
ale nie będę się kłócił z połową forum wink.gif.
Dejmien_85
Cytat(Ksar @ 5.02.2015, 23:54:12 ) *
Hehe, i tak jestem zdania że dla średnio(ledwo) rozbudowanych stron lepiej dla jednej rzeczy pliczek 0,90 kB z XH, niż (60~kB?) ajax żeby odświeżyć stronę(i chyba nic więcej?) biggrin.gif co innego gdyby strona była naprawdę dość rozbudowana, i zaincludowanie ajaxa by przyniosło zyski(przy dużej stronie...),
ale nie będę się kłócił z połową forum wink.gif.


Nie będę ukrywał tego, że masz rację jeśli chodzi o wydajność - zgadzam się! ; )

Przesadziłeś tylko z tym, że jQuery jest tak złe. Weź też pod uwagę, że nikt nie wspominał o mobilkach (także dżihad wywołałeś na własne życzenie ; D) i tutaj mamy porady dla początkującego Rambo, także dla niego lepiej będzie użyć jQuery, bo z Vanilla JavaScript może się za bardzo męczyć.

Z doświadczenia wiem, że początkującym trzeba przedstawiać rzeczy dead simple, bo inaczej po prostu mogą nie dać rady, albo się zniechęcić stopniem skomplikowania.

Poza tym, głowa do góry, każdy czasem dostaje baty za poglądy, każdy z nas błądzi. wink.gif
!*!
Cytat(Ksar @ 5.02.2015, 23:54:12 ) *
Hehe, i tak jestem zdania że dla średnio(ledwo) rozbudowanych stron lepiej dla jednej rzeczy pliczek 0,90 kB z XH, niż (60~kB?) ajax żeby odświeżyć stronę(i chyba nic więcej?) biggrin.gif co innego gdyby strona była naprawdę dość rozbudowana, i zaincludowanie ajaxa by przyniosło zyski(przy dużej stronie...),
ale nie będę się kłócił z połową forum wink.gif.


Po świecie szaleją peta/zotta bajty a ten się o kilka kb martwi wink.gif
Poza tym możesz wydzielić opcję z jquery samego ajaxa i też masz swoje kilka kb z tą różnicą, że masz pewność iż to będzie działać na każdej przeglądarce, bo założę się, że nie testowałeś swojego xhr i tych 0,90kb na np. khtml
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.