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?

In Pocket speichern vorlesen Druckansicht
Lesezeit: 2 Min.
Von
  • 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.

Mehr Infos

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. ()