2012-06-14 5 views
8

Ich möchte eine Website entwickeln, die eine Chat-Funktion zwischen einem Website-Besucher und dem Website-Administrator bietet.Wie entwickelt man eine Web-basierte XMPP-Chat-Funktion mit PHP und JQuery?

Ich weiß, der beste Weg, dies zu tun wäre XMPP verwenden, aber ich habe keine Erfahrung damit. Ich versuche, dies mit PHP zu implementieren.

Ich habe XMPPHP heruntergeladen und ein Beispiel bearbeitet, um eine Nachricht an meinen Google Chat-Client in Google Mail zu senden, aber wenn ich antworte, sagt Google mir, dass das andere Ende die Nachricht nicht erhalten habe.

Bis jetzt ist das informativste Tutorial http://www.ibm.com/developerworks/xml/tutorials/x-realtimeXMPPtut/, aber ich verstehe nicht, warum ich "Openfire" installieren muss, noch möchte ich die Website auf meinem lokalen Computer erstellen.

Kann mir bitte jemand sagen, was ich brauche (und noch wichtiger, warum), um dieses Projekt einzurichten, damit ich anfangen kann, den Code dafür zu erstellen?

+0

Muss es PHP sein? Muss es XMPP sein? – Sixty4Bit

+0

@ Sixty4Bit Entschuldigung für die Verzögerung bei der Antwort auf Sie. Muss PHP sein, muss * nicht sein * XMPP – P3tro

+1

Warum nicht versuchen, mibew? Das ist in PHP und funktioniert gut. – Tanmay

Antwort

8

Geht man von Kommentaren zu anderen Antworten werde ich Ihnen sagen, warum, und ein wenig, was aber nicht geben eine Lösung, weil ich eine Menge Lösungen in der "Related" -Seitenleiste sehe. Sie müssen den richtigen auswählen und indem Sie "das Warum" kennen, können Sie eine fundierte Entscheidung treffen.

Damit sich der Chat richtig anfühlt, muss die Antwort unmittelbar sein. Eine zeitliche Verzögerung von einer Sekunde wird den Benutzern im Laufe der Zeit auffallen und ein Gefühl der Unangemessenheit vermitteln. Um sofortige oder "Echtzeit" -Antworten in einem Browser zu ermöglichen, ist eine dauerhafte Verbindung erforderlich, so dass neue Informationen sofort angezeigt werden.

Persistente Verbindungen in Browsern sind aufgrund der Anforderungs-/Antwortspezifikationen von HTTP schwierig. Es gibt Spezifikationen in Arbeit, dauerhafte Verbindungen zu Browsern zu bringen, aber diese Browser sind nicht allgegenwärtig. In Zukunft werden persistente Verbindungen von WebSockets und SPDY geliefert, die beide in den neuesten Versionen von Chrome, Safari und FireFox mit etwas nachholendem IE verfügbar sind.

Eine weitere Option für persistente Verbindungen ist XMPP. XMPP ist das für den Jabber-Chat-Client verwendete Protokoll. Da es sich um eine Open-Source-Implementierung handelt, wurde es für viele andere Zwecke portiert. Es gibt JavaScript-Bibliotheken, mit denen Sie einen Browser mit einem XMPP-Socket verbinden und auf neue Nachrichten warten können. Die Methode, die ich in der Vergangenheit gesehen habe, besteht darin, die Nachrichten an den Webserver zu senden und den Webserver dann dem XMPP-Server über die neue Nachricht zu informieren, die dann die neue Nachricht an alle Benutzer ausstrahlt. Dies erfordert jedoch einen XMPP-Server, der die Komplexität des Systems erhöht.

Die meisten Benutzer sind nicht auf dem neuesten Stand der Browser-Versionen, so dass Sie mit älteren Browsern umgehen müssen. Die meisten Alternativen beinhalten das Öffnen einer lang laufenden Verbindung zum Server, die immer dann antwortet, wenn neue Daten eintreffen.Hier ist eine Liste von Methoden für eine permanente Verbindung in älteren Browsern zu simulieren:

  • Adobe Flash Sockel
  • ActiveX Htmlfile (IE)
  • Server-Sent Events (Opera)
  • XHR mit mehrteiliger Codierung
  • XHR mit lang Polling

Diese älteren Methoden und WebSockets, durch eine Bibliothek unterstützt werden genannt Juggernaut.

UPDATEJuggernaut has been deprecated by the maintainer, aus gutem Grund: moderne Browser persistente Verbindungen aus der Box unterstützt (mit Ausnahme von IE natürlich) durch eine Spezifikation namens Server-Sent Events (SSE). Die Abwärtskompatibilität wird nun durch Polyfills (What is a polyfill?) gehandhabt. Wie die Anmerkungen zur Depretierung zeigen, gibt es einige gute, die SSE zu älteren Browsern bringen.

+1

Eine ausgezeichnete Antwort & Einführung, um das Problem zu lösen. Als Antwort gewählt. – P3tro

0
+0

Hallo. Ich schätze Ihre Antwort, aber sie beantwortet meine Frage nicht. Ich habe bereits bei Google nach einigen Tutorials gesucht, und was ich gefunden habe, entsprach entweder nicht meinen Anforderungen oder war einfach "out-of-the-box" -Lösungen, was nicht ideal ist. Ich möchte in der Lage sein, diese Anwendung zu bauen, aber ich verstehe nicht die Grundlagen, die ist, was ich Hilfe frage. – P3tro

+0

@IjazAhmedBhatti Ich denke, du bist unhöflich und dein Kommentar fügt nichts zu dieser Diskussion oder Website hinzu. – peacemaker

0

Instant Messaging-Anwendungen sollen in Echtzeit sein. Eine Website arbeitet mit dem HTTP-Protokoll, das die Anfrage/Antwort-Methode verwendet. Eine Möglichkeit, dies zu tun, ist POLLING. eine Anfrage nach neuen ausstehenden Nachrichten für den Benutzer an den Server senden. Der Server sollte in der Lage sein, zwischen den gesendeten und den noch zu versendenden Nachrichten zu unterscheiden. Diese Methode heißt Polling. Ihr Browser fordert den Server ständig auf, alle ausstehenden Nachrichten zu senden. Aber das kann Bandbreite verschwenden und auch Batterie leeren (falls die Website mit einem Smartphone aufgerufen wird). Bessere Option ist, den XMPP-Server weiterhin zu verwenden.