Sądząc po komentarzach do innych odpowiedzi mam zamiar powiedzieć, dlaczego, i trochę co, ale nie daje rozwiązanie, ponieważ widzę mnóstwo rozwiązań na pasku bocznym "Related". Będziesz musiał wybrać właściwą i wiedząc "dlaczego" będziesz w stanie podjąć świadomą decyzję.
Aby czat się poprawił, odpowiedź musi być natychmiastowa. Jedno opóźnienie w czasie będzie zauważalne dla użytkowników w miarę upływu czasu i da poczucie nieporozumienia. Aby natychmiastowe lub "działające w czasie rzeczywistym" reakcje działały w przeglądarce, wymagają trwałego połączenia, aby po pojawieniu się nowych informacji od razu się pojawiło.
Utrwalone połączenia w przeglądarkach są trudne ze względu na specyfikację żądania/odpowiedzi HTTP. Istnieją specyfikacje, które umożliwiają trwałe połączenia z przeglądarkami, ale te przeglądarki nie są powszechne. W przyszłości połączenia trwałe będą dostarczane przez WebSockets i SPDY, które są dostępne w najnowszych wersjach Chrome, Safari i FireFox z opóźnieniem IE.
Inną opcją dla trwałych połączeń jest XMPP. XMPP jest protokołem używanym przez klienta czatu Jabbera. Ponieważ jest to implementacja open source, została przeniesiona do wielu innych zastosowań. Istnieją biblioteki JavaScript, które umożliwiają podłączenie przeglądarki do gniazda XMPP i odsłuchiwanie nowych wiadomości. Metodą, którą widziałem w przeszłości, jest wysłanie wiadomości na serwer WWW, a następnie przekazanie serwerowi sieciowemu serwera XMPP informacji o nowej wiadomości, która następnie rozsyła nową wiadomość do wszystkich użytkowników. Wymaga to jednak serwera XMPP, który podnosi złożoność systemu.
Większość użytkowników nie znajduje się na krawędzi różnych wersji przeglądarek, więc musisz mieć możliwość obsługi starszych przeglądarek. Większość opcji polega na otwieraniu długo działającego połączenia z serwerem, które reaguje na każde nowe dane.Oto lista metod symulacji stałe połączenie w starszych przeglądarkach:
- Adobe Flash Socket
- ActiveX HTMLFILE (IE)
- Server-Sent Events (Opera)
- XHR z wieloczęściowy kodowania
- XHR z długim odpytywania
tych starszych metod i WebSocket, są obsługiwane przez bibliotekę nazywa Juggernaut.
UPDATEJuggernaut has been deprecated by the maintainer, nie bez powodu: nowoczesne przeglądarki obsługują stałe połączenia z pudełka (z wyjątkiem IE oczywiście) poprzez specyfikacji zwane Server-Sent Events (SSE). Kompatybilność wsteczna jest obecnie obsługiwana przez filtry wielofunkcyjne (What is a polyfill?), a jako notatki do notek o wycofaniu istnieją kilka dobrych, które wprowadzą SSE do starszych przeglądarek.
Czy to musi być PHP? Czy to musi być XMPP? – Sixty4Bit
@ Sixty4Bit przepraszam za opóźnienie w odpowiedzi na ciebie. Musi być PHP, nie * musi być * XMPP – P3tro
Dlaczego nie spróbować mibew? To jest w PHP i działa dobrze. – Tanmay