Was sind Server-Sent Events und warum brauchen Sie sie?
\n\nStellen Sie sich vor: Sie haben eine Website mit Wechselkursen geöffnet, und der Dollarkurs ändert sich direkt vor Ihren Augen – ohne Seitenaktualisierung, ohne Tastendruck. Oder Sie warten auf das Ergebnis der Verarbeitung einer großen Datei auf dem Server, und plötzlich erscheint die Zeile: „Zu 70% fertig“. Wie funktioniert das? Eine der elegantesten Methoden sind Server-Sent Events (SSE).
\n\nSSE ist eine Technologie, die es dem Server ermöglicht, Daten eigenständig an den Client zu senden, sobald sie verfügbar sind. Im Gegensatz zu WebSocket arbeitet SSE nur in eine Richtung – vom Server zum Client. Aber genau darin liegt seine Superkraft: Es ist unglaublich einfach, effizient und ideal für Aufgaben geeignet, bei denen der Client nur Updates empfangen muss.
\n\nIn diesem Artikel werden wir uns ansehen, wie man Server-Sent Events in JavaScript verwendet, funktionierenden Code schreiben und verstehen, wann SSE die beste Wahl ist und wann man besser zu WebSocket greifen sollte. Bereit? Los geht's!
\n\nWie funktionieren Server-Sent Events (SSE)?
\n\nTechnisch gesehen ist SSE einfach eine HTTP-Verbindung, die der Server nach dem Senden der Antwort nicht schließt. Stattdessen sendet er Daten in Teilen unter Verwendung des speziellen Formats text/event-stream. Der Client (Browser) hört auf diese Verbindung über das EventSource-Objekt und generiert Ereignisse beim Empfang jeder neuen Nachricht.
So sieht eine typische Serverantwort aus:
\n\ndata: {"message": "Hallo!", "timestamp": 1700000000}\n\ndata: {"message": "Neue Benachrichtigung", "timestamp": 1700000001}\n\nJede Nachricht beginnt mit data:, gefolgt von einem Leerzeichen und dem eigentlichen Inhalt. Nachrichten werden durch zwei Zeilenumbrüche \\n\\n getrennt. Der Server kann auch IDs (id:) und Ereignistypen (event:) senden, aber der minimale Satz ist data.
Die Client-Seite ist noch einfacher:
\n\nconst eventSource = new EventSource('/events');\n\neventSource.onmessage = (e) => {\n console.log('Daten empfangen:', e.data);\n};\n\neventSource.onerror = (e) => {\n console.error('Verbindungsfehler', e);\n};\n\nFertig! Keine komplizierten Handshakes, keine Bibliotheken – der Browser verbindet sich bei einem Verbindungsabbruch automatisch neu und behandelt den Verbindungsverlust selbst. Das ist die wahre Magie von Server-Sent Events.
\n\nSSE vs WebSocket: Wann wählt man was?
\n\nAnfänger denken oft: „Da SSE einfacher ist, ist es immer besser.“ Aber das stimmt nicht. Jede Technologie hat ihre Nische. Vergleichen wir sie.
\n\n| Eigenschaft | \nSSE | \nWebSocket | \n
|---|---|---|
| Datenrichtung | \nNur Server → Client | \nBidirektional | \n
| Einfachheit der Implementierung | \nSehr einfach (nativ im Browser) | \nMittel (Bibliothek erforderlich) | \n
| Automatische Wiederverbindung | \nIntegriert | \nMuss manuell implementiert werden | \n
| Browserunterstützung | \nAlle modernen (außer IE) | \n
BlogsonBackPressed() ist veraltet: So behandeln Sie die "Zurück"-Taste in Android richtigC++ Bibliotheken 2024: Leitfaden zu leistungsstarken Tools für ProfisKotlin in realen Projekten: Anwendungsfälle von Google bis zu deinem StartupBuchempfehlungenLesen Sie auch
Funktionale Programmierung in Java: Von Lambdas bis zur Stream API
|