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.
Muss es PHP sein? Muss es XMPP sein? – Sixty4Bit
@ Sixty4Bit Entschuldigung für die Verzögerung bei der Antwort auf Sie. Muss PHP sein, muss * nicht sein * XMPP – P3tro
Warum nicht versuchen, mibew? Das ist in PHP und funktioniert gut. – Tanmay