Long Polling, SSE và WebSocket là 3 cách server push data đến client, khác nhau về directionality, overhead và độ phức tạp.
Long Polling: client gửi request, server giữ connection open cho đến khi có data mới (hoặc timeout), rồi response; client lập tức gửi request mới. Đơn giản, works everywhere, nhưng tốn nhiều connection hơn, overhead HTTP header mỗi request. Server-Sent Events (SSE): client gửi 1 GET request, server giữ connection và push events theo format data: ...\n\n. Unidirectional (server → client only), automatic reconnect, native browser support (EventSource API), over HTTP/1.1 có thể bị giới hạn 6 connections/domain nhưng HTTP/2 giải quyết. Phù hợp: notifications, live feeds, progress updates. WebSocket: bidirectional, full-duplex — cả client và server đều có thể initiate message. Overhead nhỏ hơn (binary frame). Phức tạp hơn (cần WebSocket server, proxy config). Phù hợp: chat, collaborative editing, game, trading.
Chọn SSE khi: chỉ server → client, HTTP/2 available, đơn giản hơn WS. Chọn WebSocket khi: cần bidirectional, low-latency message từ client → server thường xuyên.