Hiểu về Server Sent Events

Hãy tưởng tượng bạn đang sử dụng ChatGPT. Bạn đặt một câu hỏi. Thay vì thấy từng chữ xuất hiện dần dần, bạn phải đợi 5 giây để toàn bộ câu trả lời hiện ra cùng một lúc.

Sự chậm trễ này tạo cảm giác rất chậm chạp. Nó gây ra sự khó chịu.

Để khắc phục điều này, các nhà phát triển sử dụng phản hồi dạng streaming. Điều này giúp trải nghiệm cảm thấy nhanh chóng hơn.

Server Sent Events (SSE) giúp thực hiện được điều này.

What is SSE? SSE là một tiêu chuẩn để truyền dữ liệu từ máy chủ đến máy khách thông qua HTTP. Nó cho phép máy chủ đẩy các bản cập nhật đến bạn trong thời gian thực.

How it works: Máy chủ gửi các khối văn bản nhỏ. Các khối này sử dụng các trường như data, event, id, và retry. Mỗi khối được ngăn cách bởi một dòng trống.

Example: data: {"name": "Portal Gun", "price": 999.99}

Common uses for SSE:

  • AI chat streaming
  • Thông báo trực tiếp (Live notifications)
  • Nhật ký thời gian thực (Real time logs)
  • Khả năng quan sát hệ thống (System observability)

Trước khi có SSE, các nhà phát triển sử dụng hai phương pháp chính để nhận cập nhật:

  1. Short polling Máy khách yêu cầu dữ liệu từ máy chủ. Nếu dữ liệu chưa sẵn sàng, máy chủ sẽ gửi một thông báo chờ. Máy khách đợi và yêu cầu lại. Quá trình này lặp lại cho đến khi công việc hoàn tất.

  2. Long polling Máy khách yêu cầu dữ liệu từ máy chủ. Máy chủ sẽ giữ yêu cầu mở cho đến khi dữ liệu sẵn sàng hoặc xảy ra lỗi hết thời gian (timeout). Máy khách phải khởi động lại yêu cầu ngay sau khi nhận được phản hồi.

Các luồng sự kiện (event streams) xử lý các quy trình liên tục. Các quy trình này tuân theo một thứ tự cụ thể. Điều này bao gồm các tác vụ đơn giản như tạo tệp PDF hoặc các tác vụ phức tạp như giao dịch ngân hàng.

Máy chủ mở một kênh giao tiếp với máy khách. Nó giữ kênh này mở cho đến khi quy trình kết thúc.

Source: https://dev.to/rishini_dharan_t/understanding-server-sent-events-3mkd