2016-10-20 15 views
7

Ai đó có thể tóm tắt về sự khác biệt giữa các kỹ thuật tìm kiếm tương tự này?Sự khác nhau giữa Websocket, Server Sent Events (SSE) và HTTP2's Server Pushing là gì?

  • WebSocket
  • máy chủ gửi các sự kiện (SSE)
  • HTTP2 của máy chủ Đẩy

Tôi biết tất cả những 3 là "đẩy" phản hồi từ máy chủ thay của yêu cầu của khách hàng .

Ở giao diện đầu tiên, có vẻ như tất cả đều là cùng một. Tôi cần hiểu rõ hơn về sự khác biệt.

Trả lời

14

Websockets: giao tiếp không đồng bộ theo cả hai hướng. Cho đến nay không hoạt động tốt với HTTP/2, nhưng những nỗ lực đang diễn ra để làm cho nó như vậy. (Ví dụ: WISHwebsockets2-over-http2.)

SSE: máy chủ có thể thông báo cho trình duyệt của sự kiện. Sử dụng HTTP bình thường và hoạt động tốt ngay cả với HTTP/2. Có thể mô phỏng giao tiếp không đồng bộ theo cả hai hướng với SSE bằng cách phát thông báo từ máy khách đến máy chủ thông qua các yêu cầu POST thông thường, trong HTTP/2 các yêu cầu này đi cùng socket với mọi thứ khác có cùng nguồn gốc và do đó chi phí thiết lập kết nối mới có thể tránh được. Tuy nhiên, có thể có chi phí xử lý ở phía máy chủ để xử lý yêu cầu POST lớn hơn việc sử dụng ổ cắm web gốc.

HTTP/2 Đẩy: hoàn toàn không liên quan đến hai bên trên, đây là cơ chế để máy chủ đẩy tài sản vào trình duyệt trước. Ứng dụng có thể có: sending CSSs and Javascripts while the PHP engine is creating the HTML. Về lý thuyết, HTTP/2 Push và SSE có thể được kết hợp để làm cho các sự kiện có sẵn cho trình duyệt mà không có sự chậm trễ chuyến đi khứ hồi ban đầu.

+0

Đây là phiên bản ngắn tuyệt vời ... nhưng nó ẩn chứa những cạm bẫy và không chính xác có lợi cho việc cung cấp tổng quan tốt, Có thêm thông tin [tại đây] (http://stackoverflow.com/a/28197906/4025095), [tại đây] ] (http://stackoverflow.com/questions/5195452/websockets-vs-server-sent-events-eventsource) và [tại đây] (http://stackoverflow.com/questions/28582935/does-http-2-make -websockets-obsolete) ... Ngoài ra, Websockets hoạt động hoàn hảo với HTTP/2 bằng cách quay trở lại HTTP/1.1 trong quá trình bắt tay. Những nỗ lực trước đây để hợp nhất HTTP/2 với Websockets đã bị bỏ qua và mặc dù có thể có những nỗ lực mới, nhưng tôi không biết gì cả. – Myst

+0

@Myst: Xem chỉnh sửa của Daniel Stenberg với câu trả lời của tôi. WISH và websockets2-over-http2 đang được thảo luận tại danh sách gửi thư w3-wg. – dsign

Các vấn đề liên quan