Einführung in Node.js, Folge 14: Websockets
WebSockets sind ein TCP-basiertes Netzwerkprotokoll, das eine dauerhafte und bidirektionale Verbindung zwischen Client und Server ermöglicht. Auf dem Weg lassen sich beispielsweise Push-Nachrichten zeitnah zustellen, ohne aufwändiges Polling betreiben zu müssen. Wie funktioniert das unter Node.js?
- Golo Roden
WebSockets sind ein TCP-basiertes Netzwerkprotokoll, das eine dauerhafte und bidirektionale Verbindung zwischen Client und Server ermöglicht. Auf dem Weg lassen sich beispielsweise Push-Nachrichten zeitnah zustellen, ohne aufwändiges Polling betreiben zu müssen. Wie funktioniert das unter Node.js?
Das HTTP-Protokoll ist die Basis für alle modernen Webanwendungen. Trotzdem gibt es Szenarien, für die es nur bedingt geeignet ist. Dazu gehört beispielsweise die direkte Kommunikation vom Server zum Client, wie sie beispielsweise für Push-Nachrichten erforderlich ist.
Einführung in Node.js
- Folge 1: Node.js installieren
- Folge 2: Erste Schritte
- Folge 3: Module verwenden
- Folge 4: Web-APIs entwickeln
- Folge 5: Middleware
- Folge 6: Auf das Dateisystem zugreifen
- Folge 7: Callbacks verstehen
- Folge 8: Events auslösen und verarbeiten
- Folge 9: Datenbanken ansprechen (NoSQL)
- Folge 10: Praxisbeispiel
- Folge 11: Code analysieren
- Folge 12: Unit-Tests schreiben
- Folge 13: HTTPS und HTTP/2
- Folge 14: Websockets
Als Ausweg bietet sich das Websockets-Protokoll an, das ebenfalls auf TCP basiert und sich gemeinsam mit HTTP und HTTPS auf einem Port betreiben lässt. Webanwendungen können auf dem Weg beide Protokolle zeitgleich verwenden, ohne dafür großen Aufwand treiben zu müssen. Der wesentliche Vorteil von WebSockets besteht darin, dass sie auf einer dauerhaften TCP-Verbindung aufbauen, die eine bidirektionale Kommunikation ermöglicht, so dass nicht nur der Client den Server, sondern auch der Server jederzeit den Client erreichen kann.
Da Node.js WebSockets nicht von Haus aus unterstützt, muss man auf ein Modul aus der Community zurückgreifen. Die Auswahl ist allerdings groß und bietet je nach Funktionsumfang und Komplexität alles, was das Herz begehrt.
Lösungen wie Socket.io oder Primus abstrahieren zusätzlich sogar den eigentlichen Transportkanal und können auf alternative Technologien als Fallback wechseln, wenn WebSockets im Browser nicht zur Verfügung stehen. Module wie ws unterstützen zwar ausschließlich WebSockets, sind dafür aber weitaus leichtgewichtiger.
Allen Vorteilen zum Trotz gibt es auch bei WebSockets gelegentlich Probleme, insbesondere in Verbindung mit Proxy-Servern, Load-Balancern und Mobilfunknetzen. Auch hier muss man sich daher Gedanken um das Verwalten von Verbindungen und gegebenenfalls die Synchronisation von Daten kümmern.
Wie WebSockets in Node.js funktionieren, zeigt das folgende Video:
Empfohlener redaktioneller Inhalt
Mit Ihrer Zustimmmung wird hier eine Vimeo-Video (Vimeo LLC) geladen.
Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Vimeo LLC) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.
tl;dr: WebSockets sind eine interessante Alternative, wenn man einen leistungsfähigen Rückkanal vom Server zum Client benötigt, der ohne Polling auskommt. Allerdings gibt es auch bei WebSockets verschiedene Probleme zu berücksichtigen. ()