Ba cách đưa dữ liệu thời gian thực về client, khác nhau ở chiều và cơ chế:
- Polling: client lặp lại request HTTP theo chu kỳ để hỏi "có gì mới không". Đơn giản, chạy trên HTTP thường, nhưng trễ (dữ liệu chỉ mới đến kỳ hỏi kế) và tốn (nhiều request rỗng). Long-polling cải thiện: server giữ request tới khi có dữ liệu mới rồi trả.
- SSE (
EventSource): kênh một chiều server → client trên một kết nối HTTP mở lâu. Server chủ động đẩy text khi có sự kiện; trình duyệt tự kết nối lại khi rớt. Nhẹ, dễ dùng cho luồng cập nhật một chiều: thông báo, feed giá, log trực tiếp. Hạn chế: chỉ text, một chiều. - WebSocket: kết nối song công (full-duplex) trên một socket TCP (nâng cấp từ HTTP qua handshake). Hai bên gửi–nhận cùng lúc, độ trễ thấp, hỗ trợ cả text và binary. Hợp tương tác hai chiều liên tục: chat, game, cùng soạn thảo, bảng giá tương tác.
Chọn nhanh: cập nhật một chiều đơn giản → SSE; tương tác hai chiều, độ trễ thấp → WebSocket; nhu cầu thưa, hạ tầng chỉ có HTTP → polling là đủ. Đừng mặc định WebSocket cho mọi thứ — nó tốn tài nguyên giữ kết nối và phức tạp hơn khi scale.