Persistent bidirectional connections for chat, multiplayer, collaborative tools, and live data feeds, where polling would require hundreds of requests per minute to achieve the same update latency, and Server-Sent Events would be insufficient because the client needs to send data back to the server. WebSocket server implemented with Socket.io for Node.js applications (which handles protocol fallback, reconnection, and namespaced event routing) or raw ws for minimal-overhead scenarios; Go with gorilla/websocket for applications requiring 100,000+ concurrent connections on a single node. Authentication on WebSocket connections uses JWT token validation during the HTTP upgrade handshake, not after the connection is established, preventing authenticated message handling before credentials are verified. Redis Pub/Sub (or Redis Streams for ordered, consumer-group message delivery) provides the fan-out layer for multi-node deployments: any connected client on any server node receives events published by any other node. Heartbeat and ping/pong mechanisms detect stale connections that have silently disconnected; client-side reconnection with exponential backoff (100ms, 200ms, 400ms, capped at 30s) restores connections after network interruptions without user-visible failures. Load-tested to your concurrent connection target using k6 or locust before delivery, connection counts verified, not estimated.