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 wsBeispiel: 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.ioBeispiel: 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:
- Automatische Wiederverbindung: bei Verbindungsabbruch versucht der Client selbstständig, die Verbindung wiederherzustellen.
Auch in der Bibliothek
Prometheus-Metriken in Node.js: Die Bibliothek prom-client für das Monitoring
Logging für Kotlin: Die besten Lösungen und Bibliotheken
Integration von Prometheus-Metriken in Java: Die Bibliothek simpleclient
Bucket4j Java: Vollständiges Rate-Limiting-Tutorial
Arbeiten mit Bildern in Rust: Die Bibliothek image und mehr
Empfehlungen