WS keepalive — fixed connections dropping every ~140s
Root cause: nginx proxy_read_timeout=60s kills WebSocket connections when no data frames arrive. WebSocket PING control frames do not reset this timeout. Fix: server now sends a JSON ping frame every 25s per connection to keep nginx satisfied. Paid tier no-events timeout raised from 60s to 5 minutes so quiet live streams no longer trigger premature disconnect.