Server-Sent Events (SSE) sind ein Webstandard für einbahnigen Server-Push: Der Server schickt Daten kontinuierlich an den Browser, ohne dass der Client wiederholt nachfragt. Technisch ist SSE eine einzige, lange geöffnete HTTP-Verbindung, über die der Server Ereignisse im Textformat streamt. Im Browser übernimmt das die EventSource-API – eine schlanke Alternative zu WebSockets, wenn die Daten nur in eine Richtung fließen.
So funktioniert es
Der Client erzeugt ein EventSource-Objekt mit einer URL. Der Server antwortet mit dem Content-Type text/event-stream und hält die Verbindung offen. Die Nachrichten folgen einem einfachen Textformat mit Feldern wie data, id, event und retry, getrennt durch Leerzeilen:
data: Hallo Welt
data: {"position": 42}
id: 7
Bei Verbindungsabbruch versucht der Browser automatisch die Wiederverbindung; mitgesendete id-Werte erlauben dem Server, seit der letzten Nachricht Versäumtes nachzureichen. Das Format ist textbasiert und nutzt den normalen HTTP-Stack inklusive Caching und Authentifizierung.
Typische Anwendungen
- Live-Ticker, Börsenkurse und Sportstände
- KI-Antworten im Token-Stream (Chat-Benachrichtigungen)
- Serverzeit, Warteschlangenstatus und Log-Ausgaben
SSE im Vergleich
Anders als WebSockets, die nach einem eigenen Handshake vollduplex in beide Richtungen arbeiten, ist SSE eine reine Server-zu-Client-Strecke über gewöhnliches HTTP. Dafür ist SSE einfacher, automatisch reconnectfähig und kommt durch Proxys und Firewalls, ohne dass ein separater Port oder ein Upgrade der Verbindung nötig ist. Für einbahnige Streams ist SSE damit oft die pragmatische Lösung. Ein älterer, deutlich ineffizienterer Trick für vergleichbare Szenarien ist Long Polling, das für jede Nachricht eine neue Anfrage stellt; wer bidirektionale Echtzeitkommunikation braucht, greift zu WebSockets oder bei Service-zu-Service-Kommunikation zu gRPC.
Verwandte Grundlagen: WebSocket, AJAX, Event Stream.