Connections dying in quiet airspace
When nothing was detected for a while, the load balancer closed idle WebSocket connections and clients saw a dead feed.
The send loop waits for data with a 30-second timeout and sends a keep-alive frame when it expires, well inside the load balancer's idle window.