← ClaudeAtlas

pitfalls-websocketlisted

WebSocket server and client patterns with heartbeat and reconnection. Use when implementing real-time features, debugging connection issues, or reviewing WebSocket code. Triggers on: WebSocket, wss, heartbeat, reconnect, real-time.
aiskillstore/marketplace · ★ 329 · Web & Frontend · score 79
Install: claude install-skill aiskillstore/marketplace
# WebSocket Pitfalls Common pitfalls and correct patterns for WebSocket implementations. ## When to Use - Implementing WebSocket server - Building WebSocket client with reconnection - Debugging connection drops - Adding heartbeat/ping-pong - Reviewing WebSocket code ## Workflow ### Step 1: Verify Server Setup Check WebSocket server shares HTTP port. ### Step 2: Check Heartbeat Ensure ping/pong heartbeat is implemented. ### Step 3: Verify Client Reconnection Confirm exponential backoff reconnection logic. --- ## Server Pattern ```typescript const wss = new WebSocketServer({ server: httpServer }); // Same port wss.on('connection', (ws) => { // Heartbeat ws.isAlive = true; ws.on('pong', () => { ws.isAlive = true; }); ws.on('message', (data) => { try { const msg = JSON.parse(data.toString()); // Validate message type } catch { ws.send(JSON.stringify({ error: 'Invalid message' })); } }); }); // Heartbeat interval setInterval(() => { wss.clients.forEach((ws) => { if (!ws.isAlive) return ws.terminate(); ws.isAlive = false; ws.ping(); }); }, 30000); ``` ## Client Reconnection ```typescript // Client - reconnection logic with exponential backoff let attempt = 0; function connect() { const ws = new WebSocket(url); ws.onopen = () => { attempt = 0; // Reset on successful connection }; ws.onclose = () => { const delay = Math.min(1000 * Math.pow(2, attempt), 30000); attempt++; setTimeout(co