Server-Sent Events statt WebSockets verwenden
(germano.dev)-
Wenn man Echtzeit-Webanwendungen entwickelt, denkt man meist zuerst an WebSockets, aber auch SSE kann eine einfache Alternative sein
-
Probleme von WebSockets: Da sie nicht auf HTTP basieren, profitieren sie nicht von den Vorteilen von HTTP
→ keine Komprimierung möglich, unzureichende Unterstützung für HTTP/2-Multiplexing, Proxys unterstützen sie nicht, Hijacking möglich
- Server-Sent Events (SSE)
→ eine Funktion, mit der der Server Low-Latency-Push-Events an den Client senden kann
→ ist ein HTML-Standard und wird von allen Browsern unterstützt (außer IE)
→ anders als bei WebSockets verläuft der Datenfluss bei SSE nur in eine Richtung, vom Server zum Client (für Spiele mit bidirektionaler Kommunikation ungeeignet)
→ läuft über HTTP und benötigt kein separates Protokoll
5 Kommentare
In Umgebungen mit Load Balancern oder Proxys ist die Unterstützung für SSE oft unzureichend. (+ Enterprise Firewall)
Wenn Sie Umgebungen wie Cloudflare oder AWS CLB in Betracht ziehen, sollten Sie dies vor der Einführung von SSE noch einmal überprüfen.
Sie wird in manchen Fällen auch als Transport für GraphQL Subscriptions anstelle von WebSockets verwendet.
Implementierung eines GraphQL-SSE-Handlers: https://github.com/enisdenjo/graphql-sse
Beispiel für die Nutzung von SSE als Subscription-Transport: https://www.graphql-yoga.com/docs/features/subscriptions
Das kann eine Alternative sein, wenn es schwierig ist, WebSockets in speziellen Umgebungen wie Deno Deploy oder Lambda zu implementieren. :-)
Auch ich habe SSE erst vor Kurzem kennengelernt, als ich mir ein Chat-Beispiel auf Deno Deploy angesehen habe.
https://github.com/lucacasonato/deploy_chat
So etwas gibt es also. Wieder etwas gelernt.
Siehe dazu auch die Kommentare zu diesem Artikel und die Kommentare auf HN.
Es gibt viele unterschiedliche Meinungen, darunter von Leuten, die SSE verwenden, von Fällen, in denen von WebSockets umgestiegen wurde, und von Fällen, in denen man erst zu SSE gewechselt und dann wieder zu WebSockets zurückgekehrt ist.
https://news.ycombinator.com/item?id=30312897
Tatsächlich spricht der Artikel zwar viel über die Vorteile von SSE, wirklich nützlich ist es aber nur in speziellen Szenarien.
Heutzutage gibt es auch viele Bibliotheken für WebSockets, sodass die Implementierung einfacher geworden ist.
Auch diese Auffassung gibt es.