WebSocket ermoeglicht bidirektionale Echtzeit-Kommunikation zwischen Client und Server.
HTTP vs WebSocket¶
- HTTP – Request/Response, Stateless, Polling
- WebSocket – persistente Verbindung, bidirektional, Echtzeit
Handshake¶
GET /ws HTTP/1.1
Upgrade: websocket
Connection: Upgrade
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Server (Node.js)¶
import { WebSocketServer } from “ws”;
const wss = new WebSocketServer({ port: 8080 });
wss.on(“connection”, (ws) => {
ws.on(“message”, (data) => {
// broadcast to all
wss.clients.forEach((client) => client.send(data));
});
});
Client¶
const ws = new WebSocket(“ws://localhost:8080”);
ws.onmessage = (event) => console.log(event.data);
ws.send(“Hello”);
Anwendungsfaelle¶
- Chat-Anwendungen
- Live-Benachrichtigungen
- Echtzeit-Dashboards
- Kollaboratives Editieren
- Gaming
- Trading-/Finanz-Feeds
Skalierung¶
WebSocket haelt eine persistente Verbindung. Zum Skalieren: Redis Pub/Sub zur Koordination zwischen Servern. Oder Socket.io mit Redis-Adapter.
Alternativen¶
- SSE (Server-Sent Events) – unidirektional (Server -> Client), einfacher
- Long Polling – Fallback fuer aeltere Clients
- gRPC Streaming – fuer Service-zu-Service
Wann WebSocket¶
Bidirektionale Echtzeit-Daten. Fuer unidirektionalen Stream (Benachrichtigungen, Feeds) erwaegen Sie SSE – einfacher.