How should SSE endpoints send keepalive heartbeats to survive proxy idle timeouts?