0Pricing
React Academy · Lektion

SSE-Streams in React mit EventSource konsumieren

Verbinden Sie sich mit einem SSE-Endpunkt über EventSource in useEffect und zeigen Sie Streaming-Daten in Echtzeit an.

SSE-Streams in React mit EventSource konsumieren ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Eine EventSource-Verbindung erstellen

new EventSource(url) erstellt eine SSE-Verbindung zur angegebenen URL. Der Browser öffnet sofort eine HTTP-GET-Anfrage mit dem Header Accept: text/event-stream. Der Server hält diese Verbindung offen und überträgt Ereignisse. EventSource ist eine native Browser-API – für die grundlegende Verwendung ist keine Bibliothek erforderlich.

Zustände im Lebenszyklus der Verbindung

EventSource hat drei Bereitschaftszustände: 0 (CONNECTING) – die Verbindung wird hergestellt oder erneut hergestellt, 1 (OPEN) – die Verbindung steht und Ereignisse werden übertragen, 2 (CLOSED) – die Verbindung ist geschlossen und wird nicht erneut hergestellt. Überprüfen Sie eventSource.readyState, um den aktuellen Zustand zu ermitteln.

onmessage für allgemeine Ereignisse

Der Handler eventSource.onmessage wird für Serverereignisse ausgelöst, die keinen expliziten Ereignistyp haben (der Server sendet data: ... ohne ein Feld event:). Der Handler empfängt ein Ereignisobjekt, dessen event.data die Nutzlast als Zeichenfolge enthält. Der Server serialisiert die Daten normalerweise mit JSON.stringify, sodass Sie sie beim Empfang mit JSON.parse analysieren.

Benannte benutzerdefinierte Ereignisse

Der Server kann benannte Ereignisse senden: event: userJoined data: {"userId": "123"} . Im Browser empfangen Sie sie mit eventSource.addEventListener('userJoined', handler). So können mehrere Ereignistypen über eine einzige SSE-Verbindung übertragen werden. Jeder Ereignistyp hat seinen eigenen Handler, wodurch der Code übersichtlich und gut strukturiert bleibt.

event.data analysieren

SSE-Daten treffen als Zeichenfolgen ein. Für strukturierte Daten sendet der Server JSON.stringify(payload), und der Client analysiert sie: const data = JSON.parse(event.data). Umschließen Sie JSON.parse immer mit try/catch, damit fehlerhaftes JSON vom Server kontrolliert behandelt werden kann. Protokollieren Sie den Fehler und überspringen Sie das fehlerhafte Ereignis.

useEffect für den EventSource-Lebenszyklus

Erstellen und schließen Sie EventSource innerhalb eines useEffect: Erstellen Sie die Verbindung, wenn die Komponente eingebunden wird, fügen Sie die Event-Handler hinzu und geben Sie eine Cleanup-Funktion zurück, die eventSource.close() aufruft. Ohne Cleanup bleibt die Verbindung bestehen, wenn die Komponente ausgehängt wird, der Nutzer die Seite verlässt oder der Effekt mit anderen Abhängigkeiten erneut ausgeführt wird.

State bei einer Nachricht aktualisieren

Aktualisieren Sie im Handler eventSource.onmessage den React-State, damit die neuen Daten angezeigt werden: setMessages(prev => [...prev, JSON.parse(event.data)]). Verwenden Sie die funktionale Form von setState, um Probleme durch veraltete Closures zu vermeiden. Der Event-Handler erfasst den ursprünglichen State-Wert, während das funktionale Update sicherstellt, dass immer der aktuelle State verwendet wird.

Automatische Wiederverbindung

EventSource stellt automatisch wieder eine Verbindung her, wenn die Verbindung aufgrund eines Netzwerkfehlers oder eines Serverneustarts unterbrochen wird. Der Browser wartet kurz (typischerweise 3 Sekunden, vom Server über retry: 3000 im Stream konfigurierbar) und stellt dann die Verbindung wieder her. Sie müssen keine Logik zur Wiederverbindung implementieren – sie ist in die EventSource-API integriert.

Der Last-Event-ID-Header

EventSource verfolgt die ID des zuletzt empfangenen Ereignisses (vom Server über id: 123 im Stream festgelegt). Beim Wiederverbinden sendet der Browser diese ID automatisch im HTTP-Header Last-Event-ID. Ein gut konzipierter Server verwendet diese ID, um verpasste Ereignisse erneut zu senden und so sicherzustellen, dass während einer Wiederverbindung keine Ereignisse verloren gehen.

Anmeldedaten und Header übergeben

EventSource unterstützt keine benutzerdefinierten Header direkt. Verwenden Sie zur Authentifizierung Cookies (new EventSource(url, { withCredentials: true }) sendet Cookies) oder fügen Sie das Authentifizierungs-Token als URL-Abfrageparameter hinzu. Wenn Sie Authorization-Header benötigen, verwenden Sie statt EventSource die Fetch API mit ReadableStream, um die SSE-Antwort manuell zu verarbeiten.

Behandlung von Verbindungsfehlern

Wenn EventSource einen Fehler feststellt, wird der Handler onerror ausgelöst. readyState ist CONNECTING (wenn ein erneuter Versuch erfolgt) oder CLOSED (wenn nicht). Prüfen Sie in onerror readyState, um zwischen einem vorübergehenden Netzwerkfehler (automatischer neuer Versuch) und einem dauerhaften Fehler (der Server hat einen Status ungleich 200 zurückgegeben) zu unterscheiden. Bei dauerhaften Fehlern schließen Sie die Verbindung und informieren Sie den Benutzer.

Automatische Wiederverbindung von EventSource

Was geschieht, wenn eine EventSource-Verbindung aufgrund eines Netzwerkfehlers unterbrochen wird?

Lektionsrückblick: EventSource in React

new EventSource(url) erstellt eine SSE-Verbindung mit readyStates: CONNECTING, OPEN, CLOSED. onmessage verarbeitet allgemeine Ereignisse; addEventListener verarbeitet benannte Ereignistypen. JSON.parse(event.data) extrahiert strukturierte Nutzdaten. Erstellen und bereinigen Sie EventSource in useEffect. Die automatische Wiederverbindung ist integriert – EventSource versucht es nach Netzwerkfehlern erneut und verwendet Last-Event-ID, um verpasste Ereignisse erneut zu übertragen. Authentifizieren Sie sich über Cookies (withCredentials) oder URL-Abfrageparameter.

Häufig gestellte Fragen

Ist die Lektion „SSE-Streams in React mit EventSource konsumieren“ kostenlos?

Ja — der vollständige Text von „SSE-Streams in React mit EventSource konsumieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „SSE-Streams in React mit EventSource konsumieren“?

Verbinden Sie sich mit einem SSE-Endpunkt über EventSource in useEffect und zeigen Sie Streaming-Daten in Echtzeit an. Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um React Academy zu starten?

Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „SSE-Streams in React mit EventSource konsumieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?

Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. SSE vs. WebSockets vs. Polling im Vergleich
  2. SSE-Streams in React mit EventSource konsumieren
  3. Long-Polling-Muster und Wiederverbindungslogik
  4. Einen Echtzeit-Benachrichtigungsfeed erstellen
← Zurück zu React Academy