WebSocket subscription drops after 60s of inactivity

Opening a WS connection to /v2/analytics/events/websocket. Getting the initial subscription confirm, but events stop flowing after about a minute. No disconnect event fires.

ws.send(JSON.stringify({
 "subscription": "conversation",
 "eventType": "all",
 "entityId": "all"
}));

Server just goes silent. Heartbeat interval set to 30s. Is there a payload size limit or auth token refresh I’m missing?