When I want ‘real time’ updates without the operational overhead of WebSockets, I reach for Server-Sent Events (SSE). It’s just streaming HTTP, so it behaves well behind proxies and is easy to reason about. I set the right headers (Content-Type: text/event-stream), flush early, and send heartbeat comments so intermediaries don’t silently close idle connections. On the client, EventSource gives me a simple reconnect story, and I add exponential backoff when needed. The key constraint is that SSE is server → client only, but for progress updates, notifications, and status streams, that’s exactly the shape I want. It’s boring, simple, and surprisingly effective.