Was sind Long-Polling, Websockets, Server-Sent Events (SSE) und Comet?
Ich habe versucht, einige Artikel zu lesen, aber ich bin mir über die Konzepte noch nicht ganz im Klaren.
Könnte jemand versuchen, mir zu erklären, was diese Technologien sind?
- Lange Abfrage
- Server-gesendete Ereignisse
- Websockets
- Comet
Eine Sache, auf die ich jedes Mal stieß, war, dass der Server eine Verbindung offen hält und Daten an den Client weiterleitet. Wie wird die Verbindung offen gehalten, und wie erhält der Client die übertragenen Daten? (Wie verwendet der Client die Daten, vielleicht könnte etwas Code helfen?)
Welches von beiden sollte ich nun für eine Echtzeit-Anwendung verwenden? Ich habe schon viel über Websockets gehört (mit socket.io [eine node.js-Bibliothek]), aber warum nicht PHP?
997
3
*In den folgenden Beispielen ist der Client der Browser und der Server ist der Webserver, der die Website hostet.
Bevor Sie diese Technologien verstehen können, müssen Sie zunächst den klassischen HTTP-Webverkehr verstehen.
Reguläres HTTP:
Ajax Polling:
Ajax Polling
Ajax Long-Polling:
HTML5 Server Sent Events (SSE) / Ereignisquelle:
HTML5 Websockets:
Komet:
Comet ist eine Sammlung von Techniken aus der Zeit vor HTML5, die Streaming und Long-Polling nutzen, um Echtzeitanwendungen zu realisieren. Lesen Sie mehr auf wikipedia oder diesen Artikel.
Welche dieser Techniken sollte ich für eine Echtzeitanwendung verwenden (die ich programmieren muss)?
Sie können PHP mit WebSockets verwenden, schauen Sie sich Ratchet an.
Tieme hat sich viel Mühe mit seiner ausgezeichneten Antwort gegeben, aber ich denke, der Kern der Frage des Auftraggebers ist, wie sich diese Technologien auf PHP beziehen und nicht, wie jede einzelne Technologie funktioniert.
PHP ist die am häufigsten verwendete Sprache in der Webentwicklung, abgesehen von den offensichtlichen clientseitigen HTML-, CSS- und Javaskriptsprachen. Dennoch hat PHP 2 große Probleme, wenn es um Echtzeitanwendungen geht:
Beachten Sie, dass PHP zwar über Erweiterungen verfügt, um Ereignisschleifen (wie libevent) und Threads (wie pthreads) im PHP-Benutzerraum bereitzustellen, aber nur sehr, sehr wenige Anwendungen nutzen diese.
PHP 7 wird ein großer Schritt sein, um auch diese Probleme zu beheben, und scheint als Plattform für Echtzeitanwendungen sehr vielversprechend.
Ich habe versucht, diese zu notieren und habe Beispiele aus der Java-Perspektive gesammelt und geschrieben.
HTTP für Java-Entwickler
Reverse Ajax - Alter Stil
Async-Behandlung auf der Server-Seite
Reverse Ajax - Neuer Stil
Vom Server gesendete Ereignisse
Für alle Java-Entwickler, die sich mit demselben Thema beschäftigen, stelle ich es hier ein.