SSE
SSE là đường một chiều: máy chủ đẩy xuống, trình duyệt chỉ ngồi nghe. Đơn giản hơn WebSocket rất nhiều, và đủ dùng cho phần lớn việc. Ba chặng.
9 cột mốc · 2 có bài trong app
Bắt đầu
1Nghe được luồng sự kiện
Mở một kết nối và nhận được thứ máy chủ đẩy xuống.
- EventSourcecó bàiVài dòng là xong, không cần thư viện. Đây là lý do chính để chọn SSE.
- Một chiềucó bàiKhông có ô nhập nào để gửi ngược lên. Muốn gửi thì dùng một request HTTP bình thường.
- Định dạng bản tintự tìm hiểuChỉ là text theo dòng: event, data, id. Mở tab Network ra là đọc được bằng mắt.
2Không để mất bản tin
Kết nối đứt rồi nối lại mà người dùng không nhận ra.
- Tự kết nối lạitự tìm hiểuTrình duyệt tự làm việc này cho bạn — khác hẳn WebSocket, nơi bạn phải tự viết.
- Last-Event-IDtự tìm hiểuNối lại thì gửi kèm id cuối đã nhận, máy chủ phát tiếp từ đó.
- Giới hạn số kết nốitự tìm hiểuTrình duyệt chỉ cho mở vài kết nối cùng lúc trên một tên miền — mở nhiều tab là hết chỗ.
3Chọn cho đúng việc
Biết khi nào SSE là lựa chọn đúng, khi nào phải đổi.
- SSE hay WebSockettự tìm hiểuChỉ cần một chiều thì SSE. Cần hai chiều liên tục thì WebSocket. Đừng dùng cái nặng cho việc nhẹ.
- Streaming câu trả lờitự tìm hiểuChữ hiện dần trong các ứng dụng AI thường chính là SSE.
- Proxy và buffertự tìm hiểuMột số proxy giữ dữ liệu lại thành khối, làm luồng mất tính tức thời.
Đích
Lộ trình dừng ở đây
Ba chặng trên đủ để làm thông báo, theo dõi tiến trình, hay streaming văn bản. Phần dưới là hướng đi tiếp.
- WebSocketKhi cần cả chiều ngược lên — có bài riêng trong app.
- HTTP/2 và số kết nốiGiới hạn vài kết nối một tên miền được nới rất nhiều trên HTTP/2.
- Web PushĐẩy thông báo tới cả khi người dùng đã đóng tab.