Long-Polling, WebSockets, SSE und Comet: Vollständige Analyse mit PHP-Code

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Aktualisieren Sie die Seite immer noch manuell? Es ist Zeit für Echtzeit

\n\n

Stellen Sie sich vor: Sie öffnen eine Online-Börse, und der Dollarkurs bleibt wie angewurzelt stehen. Sie drücken F5, drücken nochmal – und er ändert sich nicht. Kommt Ihnen bekannt vor? Und jetzt stellen Sie sich vor, der Kurs aktualisiert sich von selbst, wie im Film – fließend und ohne Verzögerungen. Das ist keine Magie, das sind Echtzeit-Technologien. Sie verwandeln eine statische Website in einen lebendigen Organismus: Chats, Benachrichtigungen, Dashboards mit Echtzeit-Updates.

\n\n

Heute analysieren wir die vier Säulen, auf denen das gesamte Echtzeit-Web basiert: Long-Polling, WebSockets, Server-Sent Events (SSE) und Comet. Ich zeige Ihnen, wie sie "unter der Haube" funktionieren, und gebe fertigen PHP-Code, den Sie sofort verwenden können. Los geht's!

\n\n

Dieser Artikel wurde für das Bildungsportal pythonlib.ru geschrieben – hier verwandeln wir komplexe Konzepte in verständliche Werkzeuge.

\n\n

Kurz und knapp: Was verbirgt sich hinter den Begriffen?

\n\n

Wenn Sie eine normale Seite öffnen, sendet der Browser eine Anfrage, der Server antwortet – die Verbindung wird geschlossen. Ganz einfach. Aber was, wenn der Server selbst bei Ihnen "anklopfen" möchte, um neue Daten zu senden? Hier beginnt die Bastelei.

\n\n
    \n
  • Long-Polling (Lange Abfrage) – der alte, aber zuverlässige Großvater. Der Client "hängt" am Server und wartet darauf, dass dieser sich herablässt zu antworten.
  • \n
  • WebSockets (Websockets) – der Trend der letzten Jahre. Ein vollwertiger bidirektionaler Kanal, wie eine Telefonleitung.
  • \n
  • Server-Sent Events (SSE) – eine unidirektionale Übertragung vom Server zum Client. Ideal für Nachrichtenfeeds und Kurse.
  • \n
  • Comet – ein Oberbegriff für Techniken, bei denen der Server Daten ohne zusätzliche Anfrage zum Client "durchdrückt". Long-Polling und SSE sind Spezialfälle von Comet.
  • \n
\n\n

Technologie Nr. 1: Long-Polling – der Großvater von Echtzeit

\n\n

Long-Polling bedeutet, dass der Client zum Server sagt: "Ich warte, so lange es nötig ist, antworte einfach, wenn Daten verfügbar sind." Der Client öffnet eine Verbindung und hält sie offen, bis der Server eine Antwort sendet. Nach Erhalt der Antwort erstellt der Client sofort eine neue Anfrage. Es entsteht eine endlose Kette.

\n\n

Vorteile: Funktioniert auf jedem Hosting, erfordert keine zusätzlichen Bibliotheken, wird von allen Browsern unterstützt.

\n

Nachteile: Viele unnötige Header, Serverlast, Verzögerungen bei vielen Clients.

\n\n

Beispiel in PHP (Long-Polling)

\n\n
<?php\n// long_polling.php\nheader('Content-Type: text/plain; charset=utf-8');\nheader('Cache-Control: no-cache');\n\n$timeout = 30; // warte maximal 30 Sekunden\n$start = time();\n\n// Simuliere das Auftreten neuer Daten\n$data = getNewDataFromDB(); // Ihre Funktion zum Abrufen von Daten\n\nwhile (empty($data)) {\n    if ((time() - $start) > $timeout) {\n        echo json_encode(['status' => 'timeout', 'data' => null]);\n        flush();\n        exit;\n    }\n    usleep(500000); // schlafe 0,5 Sekunden\n    $data = getNewDataFromDB();\n}\n\necho json_encode(['status' => 'ok', 'data' => $data]);\nflush();\n?>
\n\n

Auf dem Client (JavaScript) sieht das so aus:

\n\n
function longPoll() {\n    fetch('/long_polling.php')\n        .then(response => response.json())\n        .then(data => {\n            if (data.status === 'ok') {\n                console.log('Neue Daten:', data.data);\n                // aktualisiere die Benutzeroberfläche\n            }\n            longPoll(); // sofort eine neue Anfrage erstellen\n        })\n        .catch(error => {\n            console.error('Fehler:', error);\n            setTimeout(longPoll, 1000); // nach einer Sekunde neu verbinden\n        });\n}\nlongPoll();
\n\n

Sehen Sie? Der Client hängt, wartet, erhält Daten – und hängt sich wieder auf. Das ist Long-Polling in PHP in seiner reinsten Form.

\n\n

Technologie Nr. 2: WebSockets – bidirektionale Datenautobahn

\n\n

WebSockets

Blogs

Buchempfehlungen