2012-01-06 18 views
5

Tôi muốn đẩy dữ liệu đến người dùng sau mỗi 2 phút. Sử dụng EventSource yêu cầu bổ sung đẩy null-byte mỗi 29 giây để giữ cho kết nối mở. WebSocket không yêu cầu ping như vậy. Tại sao kết nối EventSource thường xuyên đóng và mở lại? Có phải vì không có cách tích hợp sẵn trong HTTP để kiểm tra xem kết nối vẫn mở hay lý do khác?Tại sao kết nối EventSource đóng mỗi 30-60 giây khi không có dữ liệu được vận chuyển, trong khi WebSocket được giữ mở?

Trả lời

7

API sự kiện được gửi máy chủ (API sự kiện) được xếp lớp trên HTTP. WebSocket được xếp lớp trên TCP (nhưng có một cái bắt tay tương thích HTTP). Cả HTTP và TCP thường có thời gian chờ nhàn rỗi tuy nhiên, thời gian chờ TCP có xu hướng dài hơn nhiều (ví dụ: 2 giờ thay vì 2 phút). Vì vậy, bạn vẫn có thể cần thư còn sống trong WebSockets, nhưng chúng có thể ít thường xuyên hơn nhiều. Ngoài ra, WebSocket standard định nghĩa các khung ping/pong mà trình duyệt/máy chủ có thể thực hiện để thực hiện việc này cho bạn.

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