Articles

Using WebSockets with Node.js

Das JavaScript Full-Stack Bootcamp 2021 ist JETZT OFFEN FÜR ANMELDUNGEN!

WebSockets sind eine Alternative zur HTTP-Kommunikation in Webanwendungen.

Sie bieten einen langlebigen, bidirektionalen Kommunikationskanal zwischen Client und Server.

Wenn der Kanal einmal aufgebaut ist, wird er offen gehalten und bietet eine sehr schnelle Verbindung mit geringer Latenz und geringem Overhead.

Browserunterstützung für WebSockets

WebSockets werden von allen modernen Browsern unterstützt.

Browser-Unterstützung für WebSockets

Wie sich WebSockets von HTTP unterscheiden

HTTP ist ein ganz anderes Protokoll, und auch eine andere Art der Kommunikation.

HTTP ist ein Anfrage/Antwort-Protokoll: der Server gibt einige Daten zurück, wenn der Client sie anfordert.

Mit WebSockets:

  • Der Server kann eine Nachricht an den Client senden, ohne dass der Client explizit etwas anfordert
  • Der Client und der Server können gleichzeitig miteinander sprechen
  • Sehr wenig Daten-Overhead muss ausgetauscht werden, um Nachrichten zu senden. Das bedeutet eine Kommunikation mit geringer Latenzzeit.

WebSockets eignen sich hervorragend für Echtzeit- und langlebige Kommunikation.

HTTP eignet sich hervorragend für gelegentlichen Datenaustausch und vom Client initiierte Interaktionen.

HTTP ist viel einfacher zu implementieren, während WebSockets etwas mehr Overhead erfordern.

Sichere WebSockets

Verwenden Sie für WebSockets immer das sichere, verschlüsselte Protokoll, wss://.

ws:// bezieht sich auf die unsichere WebSockets-Version (die http:// von WebSockets) und sollte aus offensichtlichen Gründen vermieden werden.

Erstellen einer neuen WebSockets-Verbindung

const url = 'wss://myserver.com/something'const connection = new WebSocket(url)

connection ist ein WebSocket-Objekt.

Wenn die Verbindung erfolgreich aufgebaut ist, wird das Ereignis open abgefeuert.

Hören Sie darauf, indem Sie der onopen-Eigenschaft des connection-Objekts eine Callback-Funktion zuweisen:

connection.onopen = () => { //...}

Wenn ein Fehler auftritt, wird der onerror-Funktionscallback abgefeuert:

connection.onerror = error => { console.log(`WebSocket error: ${error}`)}

Daten per WebSockets an den Server senden

Sobald die Verbindung geöffnet ist, können Sie Daten an den Server senden.

Das können Sie bequem innerhalb der onopen Callback-Funktion tun:

connection.onopen = () => { connection.send('hey')}

Daten vom Server mit WebSockets empfangen

Mit einer Callback-Funktion auf onmessage hören, die aufgerufen wird, wenn das Ereignis message empfangen wird:

connection.onmessage = e => { console.log(e.data)}

Implementieren Sie einen WebSockets-Server in Node.js

ws ist eine beliebte WebSockets-Bibliothek für Node.js.

Wir werden sie verwenden, um einen WebSockets-Server zu implementieren. Sie kann auch verwendet werden, um einen Client zu implementieren und WebSockets zur Kommunikation zwischen zwei Backend-Diensten zu nutzen.

Einfach zu installieren mit

yarn inityarn add ws

Der Code, den Sie schreiben müssen, ist sehr gering:

const WebSocket = require('ws')const wss = new WebSocket.Server({ port: 8080 })wss.on('connection', ws => { ws.on('message', message => { console.log(`Received message => ${message}`) }) ws.send('ho!')})

Dieser Code erstellt einen neuen Server auf Port 8080 (dem Standardport für WebSockets) und fügt eine Callback-Funktion hinzu, wenn eine Verbindung hergestellt wird, die ho! an den Client sendet und die empfangenen Nachrichten protokolliert.

Ein Live-Beispiel auf Glitch sehen

Hier ist ein Live-Beispiel für einen WebSockets-Server: https://glitch.com/edit/#!/flavio-websockets-server-example

Hier ist ein WebSockets-Client, der mit dem Server interagiert: https://glitch.com/edit/#!/flavio-websockets-client-example

Laden Sie sich mein kostenloses Node.js-Handbuch herunter

Das JavaScript Full-Stack Bootcamp 2021 IST JETZT FÜR ANMELDUNGEN BIS ZUM NÄCHSTEN DIENSTAG OFFEN! Verpassen Sie diese Gelegenheit nicht, melden Sie sich HEUTE an!

Weitere Node-Tutorials:

  • npm-Abhängigkeiten und devDependencies
  • Wie man Sequelize verwendet, um mit PostgreSQL zu interagieren
  • Eine kurze Geschichte von Node.js
  • Verwendung von WebSockets mit Node.js
  • Wie man in Express sowohl den geparsten Body als auch den rohen Body erhält
  • Wie man Promises und Wait mit Node.js Callback-basierten Funktionen verwendet
  • Wie man Node.js installiert
  • Eine Einführung in den npm-Paketmanager
  • Interaktion mit der Google Analytics API mit Node.js

Eine Antwort schreiben

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.