WebSocket-Bibliotheken für Node.js: ws, Socket.IO, uWS – ein vollständiger Überblick

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

WebSocket-Bibliotheken für Node.js: ws, Socket.IO und µWebSockets



WebSocket ist ein Protokoll, das eine dauerhafte bidirektionale Verbindung zwischen Client und Server ermöglicht. Im Node.js-Ökosystem gibt es mehrere beliebte Bibliotheken, die dieses Protokoll implementieren. In diesem Artikel betrachten wir die drei wichtigsten: ws, Socket.IO und µWebSockets (uWS). Sie erfahren, wie Sie sie installieren, einen einfachen Chat-Server schreiben und das passende Werkzeug für Ihre Aufgabe auswählen.



1. Bibliothek ws – leicht und leistungsstark



ws ist die beliebteste und schnellste WebSocket-Bibliothek für Node.js. Sie implementiert das reine WebSocket-Protokoll ohne zusätzliche Erweiterungen, was einen minimalen Overhead und maximale Geschwindigkeit bietet.



Installation

npm install ws


Beispiel: Echo-Server

const WebSocket = require('ws');

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

server.on('connection', (ws) => { console.log('Client verbunden');

ws.on('message', (message) => { console.log(`Empfangen: ${message}`); ws.send(`Echo: ${message}`); });

ws.on('close', () => { console.log('Client getrennt'); });});

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


Clientseite (Browser)

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

socket.onopen = () => { console.log('Verbindung hergestellt'); socket.send('Hallo, Server!');};

socket.onmessage = (event) => { console.log('Antwort vom Server:', event.data);};

socket.onerror = (error) => { console.error('WebSocket-Fehler:', error);};


Eigenschaften von ws:

  • Leistung: bis zu 2-3 Mal schneller als Socket.IO in Durchsatz-Tests.
  • Minimalismus: keine integrierten Mechanismen für Wiederverbindung, Räume oder Fallback-Transporte.
  • Unterstützung: vollständige Kompatibilität mit RFC 6455.
  • Verwendung: ideal für Echtzeit-Anwendungen, bei denen Geschwindigkeit entscheidend ist (Börsendaten, Spiele, Chat mit hoher Last).


2. Socket.IO – Komfort und Zuverlässigkeit für die Produktion



Socket.IO ist nicht nur eine WebSocket-Bibliothek, sondern ein komplettes Framework für Echtzeit-Anwendungen. Es erweitert WebSocket um: automatische Wiederverbindung, Räume, Namensräume, Fallback auf Long-Polling (falls WebSocket nicht unterstützt wird) und eine benutzerfreundliche API.



Installation

npm install socket.io


Beispiel: Einfacher Chat-Server

const http = require('http');const { Server } = require('socket.io');

const server = http.createServer();const io = new Server(server, { cors: { origin: '*' }});

io.on('connection', (socket) => { console.log(`Benutzer verbunden: ${socket.id}`);

socket.on('chat message', (msg) => { console.log(`Nachricht: ${msg}`); io.emit('chat message', msg); // an alle senden });

socket.on('disconnect', () => { console.log(`Benutzer getrennt: ${socket.id}`); });});

server.listen(3000, () => { console.log('Socket.IO-Server auf http://localhost:3000');});


Clientseite (Browser)

<script src="/socket.io/socket.io.js"></script><script>  const socket = io('http://localhost:3000');

socket.on('connect', () => { console.log('Mit Server verbunden'); socket.emit('chat message', 'Hallo zusammen!'); });

socket.on('chat message', (msg) => { const item = document.createElement('li'); item.textContent = msg; document.getElementById('messages').appendChild(item); });</script>


Eigenschaften von Socket.IO:

Empfehlungen