"Real-time" covers a lot of ground — a chat app, a live dashboard, presence indicators, and collaborative cursors have very different needs. Picking the wrong transport or architecture leads to features that work in a demo and fall apart under real load. The good news: most real-time needs map cleanly to a few well-understood patterns. Here's how to choose.

Match the transport to the need

Start by asking: does data flow one way (server to client) or both ways?

Server-Sent Events (SSE): a simple, one-way stream from server to client over plain HTTP. Perfect for notifications, live feeds, activity streams, and dashboards. It auto-reconnects, works through most proxies, and is far simpler than WebSockets. Underused and often the right answer.

WebSockets: a persistent, full-duplex connection for true bidirectional, low-latency communication. The right choice for chat, multiplayer, collaborative editing, and live cursors — anything where the client sends frequently too.