WebSocket
A protocol that upgrades an HTTP connection into a persistent, full-duplex channel so the server can push to the client without polling.
Where it genuinely fits: chat, collaborative editing, live dashboards, multiplayer state — anything with frequent bidirectional messages and low latency requirements.
The architectural consequence is that connections are stateful and long-lived, which breaks assumptions a stateless HTTP tier relies on. Load balancers must support the upgrade and use sticky routing; each connection consumes a file descriptor and memory for its whole life, so capacity is measured in concurrent connections rather than requests per second; and a deployment disconnects every client at once, so reconnection with jittered backoff is mandatory rather than optional.
Broadcasting across instances needs a backplane — a client connected to instance A must receive a message published on instance B — which is normally Redis pub/sub or a broker.
Before reaching for it, check whether server-sent events suffice. If the flow is server-to-client only, SSE is plain HTTP, reconnects automatically, and avoids most of the above.