WebSocket in Node.js: Die ws-Bibliothek für Echtzeitkommunikation

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Die Bibliothek ws: WebSocket für Node.js



Die Bibliothek ws ist eine einfache, schnelle und vollständig getestete Implementierung des WebSocket-Protokolls für Node.js. Sie ist der De-facto-Standard für die Erstellung von Echtzeitanwendungen (Chats, Online-Spiele, Benachrichtigungen, gemeinsame Bearbeitung) auf der Serverseite von JavaScript. Im Gegensatz zum integrierten http-Modul bietet ws eine vollwertige bidirektionale Kommunikation zwischen Client und Server ohne ständige HTTP-Anfragen.



Hauptfunktionen

  • Vollständige Unterstützung des RFC 6455-Protokolls – funktioniert mit allen modernen Browsern.
  • Hohe Leistung – minimaler Speicherverbrauch und geringe Latenz.
  • Einfache API – Server- und Client-Erstellung in wenigen Codezeilen.
  • Unterstützung für Erweiterungen – Datenkomprimierung (permessage-deflate).
  • Integration mit HTTP-Server – Port kann mit Express oder anderen Frameworks geteilt werden.
  • Automatische Wiederverbindung – integrierte Mechanismen für den Client.


Installation

Installation über npm:

npm install ws

Nach der Installation ist die Bibliothek einsatzbereit.



Erstellen eines WebSocket-Servers

Wir erstellen einen einfachen Server, der Verbindungen annimmt und eine Begrüßungsnachricht sendet:

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws) { console.log('Neuer Client verbunden');

// Nachricht an den Client senden ws.send('Willkommen auf dem WebSocket-Server!');

// Eingehende Nachrichten verarbeiten ws.on('message', function incoming(message) { console.log('Empfangen: %s', message); // Zurücksenden (Echo) ws.send('Echo: ' + message); });

// Verbindungsabbruch verarbeiten ws.on('close', function() { console.log('Client getrennt'); });});

console.log('WebSocket-Server gestartet unter ws://localhost:8080');


Erstellen eines WebSocket-Clients

Der Client verbindet sich mit dem Server, sendet eine Nachricht und erhält eine Antwort:

const WebSocket = require('ws');

const ws = new WebSocket('ws://localhost:8080');

ws.on('open', function open() { console.log('Verbindung hergestellt'); ws.send('Hallo, Server!');});

ws.on('message', function incoming(data) { console.log('Antwort vom Server: %s', data); ws.close();});

ws.on('close', function() { console.log('Verbindung geschlossen');});

ws.on('error', function error(err) { console.error('Fehler:', err.message);});


Arbeiten mit JSON und mehreren Clients

Ein reales Beispiel – ein Chat-Server, der Nachrichten an alle verbundenen Clients sendet (Broadcast):

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws, req) { console.log('Client verbunden. Gesamtanzahl Clients:', wss.clients.size);

ws.on('message', function incoming(message) { // JSON parsen let data; try { data = JSON.parse(message); } catch (e) { ws.send(JSON.stringify({ error: 'Ungültiges JSON' })); return; }

// An alle außer dem Absender senden wss.clients.forEach(function each(client) { if (client !== ws && client.readyState === WebSocket.OPEN) { client.send(JSON.stringify({ username: data.username, text: data.text, timestamp: Date.now() })); } }); });

ws.send(JSON.stringify({ system: 'Willkommen im Chat!' }));});

Der Client kann JSON senden:

ws.send(JSON.stringify({ username: 'Alice', text: 'Hallo zusammen!' }));


Integration mit HTTP-Server

Empfehlungen