평범한 HTTP는 request/response다: 클라이언트가 묻고, 서버가 답하면, 끝이다. 그것은 서버가 새로운 것이 생길 때마다 데이터를 push해야 하는 실시간 기능(채팅, 라이브 대시보드, 알림, 협업 편집)에는 잘 맞지 않는다. 선택지들은 HTTP의 클라이언트 개시(client-initiated) 모델을 우회하는 방법들이며, 복잡도의 스펙트럼을 따라 놓인다:
Long-polling client ──req──▶ server ...holds... ──resp──▶ then immediately re-asks
(near-real-time over plain HTTP; one message per held request)
SSE client ──req──▶ server ═══stream of events═══▶ (one-way, server→client)
(HTTP-based, text, auto-reconnect; NO client→server on same channel)
WebSocket client ──handshake──▶ server ══full-duplex, both directions══▶
(persistent TCP; low overhead; binary or text; you build the rest)
