2012-06-14 9 views
8

Chciałbym stworzyć stronę internetową, która zawiera funkcję czatu między odwiedzającym stronę i administratorem strony.Jak zbudować internetowy czat XMPP za pomocą PHP i JQuery?

Wiem, że najlepszym sposobem na to byłoby użycie XMPP, jednak nie mam doświadczenia z jego używaniem. Szukam do wdrożenia tego przy użyciu PHP.

Pobrałem XMPPHP, a ja zredagowałem przykład, aby wysłać wiadomość do mojego klienta Google Chat w Gmailu, ale kiedy odpowiadam, Google mówi mi, że drugi koniec nie dostał wiadomości.

Do tej pory najbardziej pouczającym samouczkiem jest http://www.ibm.com/developerworks/xml/tutorials/x-realtimeXMPPtut/, ale nie rozumiem, dlaczego muszę zainstalować "Openfire", ani nie chcę budować strony na moim lokalnym komputerze.

Czy ktoś może mi powiedzieć, czego potrzebuję (i co ważniejsze, dlaczego), aby skonfigurować ten projekt, aby móc rozpocząć tworzenie kodu?

+0

Czy to musi być PHP? Czy to musi być XMPP? – Sixty4Bit

+0

@ Sixty4Bit przepraszam za opóźnienie w odpowiedzi na ciebie. Musi być PHP, nie * musi być * XMPP – P3tro

+1

Dlaczego nie spróbować mibew? To jest w PHP i działa dobrze. – Tanmay

Odpowiedz

8

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.

+1

Doskonała odpowiedź i wprowadzenie do sol; ve problem. Wybrano jako odpowiedź. – P3tro

0
+0

Witam. Doceniam twoją odpowiedź, ale to nie odpowiada na moje pytanie. Już szukałem w Google niektórych poradników, a to, co znalazłem albo nie odpowiadało moim potrzebom, albo było po prostu "gotowymi do użycia" rozwiązaniami, co nie jest idealne. Chcę być w stanie zbudować tę aplikację, ale nie rozumiem podstaw, o co proszę mojej pomocy. – P3tro

+0

@IjazAhmedBhatti Myślę, że jesteś niegrzeczny, a twój komentarz nie dodaje nic do tej dyskusji lub strony. – peacemaker

0

Aplikacje do przesyłania wiadomości błyskawicznych powinny działać w czasie rzeczywistym. Witryna działa na protokole HTTP, który wykorzystuje metodę żądania/odpowiedzi. Jednym ze sposobów, aby to zrobić, jest POLLING. wyślij na serwer prośbę o nowe oczekujące wiadomości dla użytkownika. Serwer powinien mieć możliwość rozróżnienia między wiadomościami, które zostały wysłane, a tymi, które jeszcze nie zostały dostarczone. ta metoda nazywa się sondowaniem. Twoja przeglądarka nieustannie prosi serwer o wysłanie wszelkich oczekujących wiadomości. Może to jednak spowodować marnowanie przepustowości, a także wyczerpanie baterii (w przypadku dostępu do witryny za pomocą smartfona). Lepszym rozwiązaniem jest nadal korzystać z serwera XMPP.

Powiązane problemy