Server-Sent Events und Echtzeit im Web
Kurz: Wenn der Server dem Browser Neuigkeiten schicken soll (Chat, Kurse, Fortschrittsbalken), gibt es drei Wege: Polling, Server-Sent Events und WebSockets. Jeder passt zu anderen Aufgaben.
Polling
Der Browser fragt alle paar Sekunden nach. Einfach, funktioniert überall, aber verschwendet Anfragen und ist nie ganz aktuell. Long Polling hält die Anfrage offen, bis es etwas gibt.
Server-Sent Events (SSE)
Eine normale HTTP-Verbindung bleibt offen und der Server schickt in eine Richtung Ereignisse als Textzeilen:
const quelle = new EventSource("/api/ereignisse");
quelle.onmessage = (e) => console.log(JSON.parse(e.data));
quelle.addEventListener("fortschritt", (e) => aktualisiere(e.data));Vorteile: sehr einfach, der Browser verbindet sich selbst neu, läuft über normales HTTP. Nachteil: nur Server → Browser, Text. Beliebt für Benachrichtigungen, Live-Ticker und das Streamen von KI-Antworten.
WebSockets
Eine dauerhafte Zwei-Wege-Verbindung. Ideal für Chats, Spiele und gemeinsames Bearbeiten, wo auch der Browser oft sendet. Aufwändiger (eigene Wiederverbindung, Nachrichtenformat) und schwerer hinter manchen Proxys.
Welche Wahl?
| Bedarf | Lösung |
|---|---|
| selten neue Daten, Einfachheit | Polling |
| Server meldet Neuigkeiten | SSE |
| beide Seiten senden oft, kleine Verzögerung | WebSocket |
Auf Serverless-Plattformen sind dauerhafte Verbindungen oft begrenzt, dann nutzt man Dienste mit Push-Kanälen. Grundlagen zur Übertragung: HTTP.
Siehe auch: Event Loop