• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sprawdzanie czy nie pojawiła się nowa wiadomość - czat

Object Storage Arubacloud
+3 głosów
505 wizyt
pytanie zadane 19 kwietnia 2015 w PHP przez Arkadiusz Waluk Ekspert (287,950 p.)
Witajcie wszyscy!

Mam pewnien problem, z którym męczę się już od dłuższego czasu i wymyślić nic nie mogę więc postanowiłem zapytać. Tworzę sobie taki mały czat w PHP, mam już wysyłanie wiadomości przez AJAXa i wszystko działa okej. Teraz muszę zrobić sprawdzanie czy nie pojawiła się nowa wiadmość i ją pokazać (oczywiście bez przeładowania strony). Wszystko byłoby proste tylko nie wiem, jak sprawdzać czy nie pojawiła się wiadomość. Oczywiście najprostsze rozwiązanie to pytanie serwer przez AJAXa np. co 5 sekund czy przyszła wiadomość ale będzie to strasznie obciążające i zabierające transfer więc raczej odpada. Szukałem jakiegoś rozwiązania, aby to serwer mógł sam dać znać klientowi, że jest nowa wiadomość i znalazłem coś takiego http://blog.wilgucki.pl/2010/04/komunikacja-z-serwerem-w-czasie.html ale niestety nie za wiele z tego rozumiem... Flasha też nie znam, więc ciężko mi jakoś spożytkować ten przykład.

Ma ktoś może jakieś pomysły? Jakieś wskazówki, które naprowadziłyby mnie na rozwiąznie tego problemu.?

Z góry dziękuję za wszystkie odpowiedzi.

2 odpowiedzi

+1 głos
odpowiedź 19 kwietnia 2015 przez nefil1m Stary wyjadacz (10,690 p.)
Nie znam pehapa więc moja odpowiedź będzie bardziej 'ideologiczna'.

W js jest mechanizm obietnic. Działa to na tej zasadzie, że definiujesz obietnicę, która czeka aż dostanie dane i wtedy spełniasz obietnicę i ładujesz te dane do widoku. Czyli skrypt czeka aż obietnica będzie spełniona.

Nie wiem czy da się coś takiego zaimplementować w php bo rzecz jest asynchorniczna (ale skoro ajax jest..). Materiałów musisz poszukać na własną rękę. Ang: Promises
komentarz 19 kwietnia 2015 przez Arkadiusz Waluk Ekspert (287,950 p.)
Dziękuję za odpowiedź poczytam jeszcze o tym, ale jest jeden problem. Napisałeś o obietnicach w JS ale trzeba jakoś sprawdzać czy nowa wiadomość się pojawiła. Nawet gdy wprowadze te obietnice i tak muszę jakoś sprawdzać czy jest nowa wiadomość i właśnie z tym mam problem. Tak jak mówiłem ajax raczej mi w tym nie pomoże bo musiałbym co jakiś czas pytać serwer co będzie robiło duże obciążenia. Szukam czegoś takiego żeby to serwer mógł w jakiś prosty sposób powiadomić klienta o tym że wiadomość już jest a wtedy z pobieraniem wiadomości już sobie poradzę nawet przez zwykłego ajaxa. Tylko żeby jakoś sprawdzać czy wiadomość się nie pojawiła.
+1 głos
odpowiedź 19 kwietnia 2015 przez Kamilogik Obywatel (1,280 p.)
Dobrze zauważyłeś, że ajax to nie to. Ta technologia pozwala na asynchroniczne wysłanie danych lecz nie ma mowy o odebraniu informacji od serwera bez wcześniejszego zapytania. Tak przecież działa protokół HTTP.

I tu powstaje pytanie co konkretnie chcesz wykonać. Łatwiej zrobić shoutbox który odświeża się minimalnie co kilkanaście sekund ajaxem by nie zakatować serwera jednak to nie jest czas real time (czasu rzeczywistego)

I dlatego powstało coś takiego jak websocket. Protokół ws umożliwia dwukierunkową wymianę informacji czyli gdy ktoś napisze coś na chacie to serwer wyśle tę wiadomość wszystkim użytkownikom będącym online. Klientem WebSocket jest przeglądarka przy użyciu samego JavaScript. Serwer może być w różnej technologii. (Python, node.js czy nawet php) jednak pamiętaj, że na tanich i darmowych hostingach nie da się postawić serwera WebSocket.

Jeżeli ogarniasz JS to z clientem poradzisz sobie szybko. Ja mam bardziej problemy z serwerem bo jedynie udało mi się zrobić serwer php co uznaje się przez niektórych za coś niedorzecznego choć nie rozumiem dlaczego. No i z racji młodego wieku tej technologi trzeba szukać pomocy na angielkich stronach bo po polsku mało o tym.
komentarz 19 kwietnia 2015 przez Arkadiusz Waluk Ekspert (287,950 p.)
Wykonać chcę prawdziwy czat w czasie rzeczywistym taki jak mamy np. na Facebooku a nie shoutbox. Jestem zielony w tej tematyce dlatego zapytam co musi mieć serwer aby obsługiwał websocket. Jak napisać taki skrypt i jak go uruchomić? Jak rozumiem musi on ciągle działać ma serwerze? Podejmę się pisania w PHP bo Pythona ani node.js nie znam. JSa ogarniam także mam nadzieję że od tej strony sobie poradzę. Dzięki bardzo to co napisałeś na pewno bardzo mi pomoże. Czytam właśnie jakieś fora, może masz jeszcze jakieś wskazówki, które pomogą mi coś takiego napisać?

Podobne pytania

+1 głos
2 odpowiedzi 236 wizyt
+1 głos
1 odpowiedź 3,286 wizyt
0 głosów
0 odpowiedzi 208 wizyt
pytanie zadane 3 września 2020 w HTML i CSS przez Official gildin Bywalec (2,820 p.)

92,619 zapytań

141,468 odpowiedzi

319,786 komentarzy

62,001 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...