23 điểm bởi xguru 2022-02-14 | 5 bình luận | Chia sẻ qua WhatsApp
  • Khi xây dựng ứng dụng web thời gian thực, thông thường người ta sẽ nghĩ đến WebSocket, nhưng SSE cũng có thể là một lựa chọn thay thế đơn giản

  • Vấn đề của WebSocket: vì không dựa trên HTTP nên không được hưởng các lợi ích của HTTP

→ không thể nén, hỗ trợ HTTP/2 multiplexing còn hạn chế, các proxy không hỗ trợ, có thể bị hijacking

  • Server-Sent Events (SSE)

→ tính năng cho phép máy chủ gửi các sự kiện push độ trễ thấp đến client

→ là tiêu chuẩn HTML và được mọi trình duyệt hỗ trợ (trừ IE)

→ khác với WebSocket, SSE là luồng một chiều từ server đến client (không phù hợp với game cần giao tiếp hai chiều)

→ hoạt động trên HTTP và không cần giao thức riêng

5 bình luận

 
minhoryang 2022-02-18

Trong môi trường Load Balancer hoặc Proxy, nhiều trường hợp hỗ trợ SSE còn hạn chế. (+Enterprise Firewall)

Nếu bạn đang cân nhắc các môi trường như Cloudflare hay AWS CLB, hãy kiểm tra lại thêm một lần trước khi áp dụng SSE.

 
cometkim 2022-02-16

Đôi khi nó cũng được dùng thay cho WebSocket như một transport cho GraphQL Subscription.

 
wan2land 2022-02-14

Khi khó triển khai WebSocket trong các môi trường đặc thù như Deno Deploy hay Lambda, đây có thể là một giải pháp thay thế. :-)

Gần đây khi xem ví dụ chat trên Deno Deploy, tôi cũng lần đầu biết đến SSE.

https://github.com/lucacasonato/deploy_chat

 
nicewook 2022-02-14

Hóa ra còn có cái này nữa. Học được thêm rồi

 
xguru 2022-02-14

Hãy tham khảo thêm cả phần bình luận của bài viết này và phần bình luận trên HN.

Có rất nhiều ý kiến đa dạng, như từ những người đang dùng SSE, các trường hợp chuyển từ WebSocket sang, hay những trường hợp đã dùng SSE rồi lại quay về WebSocket.

https://news.ycombinator.com/item?id=30312897

Thực ra bài viết nói khá nhiều về ưu điểm của SSE, nhưng nó chỉ thực sự hữu ích trong những kịch bản đặc biệt.

Dạo gần đây phía WebSocket cũng có nhiều thư viện ra mắt nên việc triển khai cũng trở nên đơn giản hơn.

Cũng có những ý kiến như vậy.