CodePark/ questions / WebSockets, SSE & polling
START PRACTICINGPRACTICE
Backend question · HTTP & API design › WebSockets, SSE & polling

Compare WebSockets, Server-Sent Events and long polling. Which would you use for a chat app, a live dashboard and occasional job-status updates?

Use WebSockets for chat, SSE for a live dashboard, and polling or SSE for occasional job status.

Long polling: the client sends a request. The server holds it open until there is news or a timeout. Then the client asks again right away. It works everywhere over plain HTTP. But it costs one request per message, and it adds delay.

SSE (Server-Sent Events): the client opens one HTTP request. The server streams text/event-stream messages down it.

  • It goes one way only, from server to client.
  • It carries text only.
  • EventSource gives built-in reconnection and Last-Event-ID, so the client can continue from the last message it got.
  • It works with normal HTTP infrastructure.

WebSockets: an HTTP upgrade turns the connection into a full-duplex channel. Both sides can send text or binary frames at any time, with little overhead.

Why each choice:

  • Chat needs both directions with low delay, so use WebSockets.
  • A live dashboard only receives data, so SSE is simpler.
  • Occasional job status can use plain polling, long polling, or SSE.
  • Long polling holds requests open, works anywhere, but costs a request per message.
  • SSE sends text from server to client and reconnects automatically.
  • WebSockets go both ways, can carry binary data, and start with an upgrade.
  • Choose based on the direction and frequency of messages.