Polling, Long Polling, SSE und WebSocket: Echtzeit im Vergleich
Kurz: Für Live-Daten im Web gibt es Polling (regelmäßig nachfragen), Long Polling (Antwort zurückhalten), Server-Sent Events (Server schickt Ereignisse) und WebSockets (Zwei-Wege-Verbindung).
Genauer: HTTP funktioniert klassisch als Frage und Antwort: Der Client fragt, der Server antwortet. Für Chats, Benachrichtigungen, Live-Ergebnisse oder Dashboards will man aber, dass der Server von sich aus Neuigkeiten schickt. Es gibt vier gängige Techniken.
Im Detail
Polling (Short Polling)
Der Client fragt regelmäßig (alle 5 Sekunden) „Gibt es etwas Neues?“.
setInterval(async () => {
const r = await fetch('/api/benachrichtigungen');
zeige(await r.json());
}, 5000);Einfach, funktioniert überall und mit Caching/Proxys. Nachteile: Verzögerung bis zur nächsten Abfrage, viele leere Anfragen, Last und Datenbank-Weckrufe. Gut bei seltenen Änderungen; Intervall anpassen (nur wenn Tab sichtbar, mit Backoff).
Long Polling
Der Server hält die Anfrage offen, bis es Neues gibt (oder ein Timeout), antwortet, und der Client fragt sofort neu. Weniger leere Anfragen und geringere Latenz als Polling, funktioniert über normales HTTP, aber jede offene Anfrage belegt Serverressourcen; war vor WebSockets verbreitet.
Server-Sent Events (SSE)
Eine dauerhafte HTTP-Verbindung, über die der Server Ereignisse in eine Richtung schickt:
const es = new EventSource('/stream');
es.onmessage = (e) => zeige(JSON.parse(e.data));Vorteile: einfach, automatisches Wiederverbinden, Textformat, über HTTP/2 effizient. Nur Server → Client. Ideal für Benachrichtigungen, Live-Feeds, Fortschrittsanzeigen, KI-Antworten (Streaming).
WebSocket
Eine bidirektionale Verbindung (Client ↔ Server) nach einem HTTP-Upgrade, geringer Overhead, Text und Binärdaten:
const ws = new WebSocket('wss://beispiel.de/chat');
ws.onmessage = (e) => zeige(e.data);
ws.send('Hallo');Ideal für Chats, Spiele, kollaboratives Arbeiten, Live-Handel. Aufwand: Verbindungsverwaltung (Wiederverbinden, Heartbeats), Skalierung (viele offene Verbindungen, Sticky Sessions, Pub/Sub), Firewall/Proxy-Probleme.
Auswahl
- Seltene Updates → Polling (einfach, robust).
- Nur Server-Nachrichten → SSE.
- Hin und her, niedrige Latenz → WebSocket.
- Alte Umgebungen → Long Polling. Bedenke Serverlast, Kosten (zum Beispiel serverlose Plattformen mit begrenzten Verbindungszeiten) und Datenbank-Last. Für Handy-Akku und Datenschutz: sparsam abfragen, Verbindungen schließen, wenn nicht gebraucht.
Siehe auch: WebSockets, Server-Sent Events und Echtzeit, Webhooks, HTTP Keep-Alive