Zum Inhalt springen

Server-Sent Events

Server-Sent Events übertragen über eine HTTP-Verbindung Textmeldungen vom Server zum Client, etwa zum Fortschritt eines Hintergrundauftrags.

Auch bekannt alsSSE
API und Datenverträge

Server-Sent Events, kurz SSE, übertragen Textmeldungen vom Server zum Client über eine HTTP-Verbindung. Im Browser stellt EventSource dafür eine Schnittstelle bereit; der Ereignisstrom verwendet text/event-stream. Die Verbindung ist einseitig. Befehle vom Client an den Server benötigen einen eigenen Weg, etwa normale HTTP-Anfragen.

Eine Meldung zum laufenden Berichtsauftrag

Ein fiktives Portal erhält diesen Ereignisblock:

id: evt-12
event: job-status
data: {"jobId":"J-52","status":"running"}

Die Leerzeile beendet den Block. Ereigniskennung, Ereignistyp und Nutzdaten haben unterschiedliche Aufgaben. Hier meldet der Server eine laufende Erstellung; die Meldung bedeutet nicht, dass die Datei bereits fertig ist. Die Feldwerte sind unser eigenes Beispiel.

Bei einer wiederherstellbaren Unterbrechung kann EventSource automatisch neu verbinden. Eine zuvor gesetzte, nicht leere Ereigniskennung wird dabei über Last-Event-ID gemeldet. Der Server muss selbst festlegen, ob und wie er fehlende Meldungen erneut bereitstellt. Die Kennung erzeugt keine gespeicherte Ereignishistorie.

Die Anwendung braucht deshalb einen Umgang mit Doppelmeldungen und einer nicht mehr verfügbaren Historie, etwa einen erneuten Abruf des aktuellen Auftragszustands. SSE garantiert nicht, dass eine fachliche Aktion genau einmal ausgeführt wird. Zugriff auf Projekt und Auftrag muss auch beim Verbinden und beim Ausliefern der Meldungen geprüft werden.

Quellen

Beiträge zum Thema

Ihr Vorhaben mit ASES

Beschreiben Sie uns Ihr Vorhaben. Wir melden uns mit einer ersten Einschätzung.