Tôi sẽ chỉ thêm phối cảnh cao hơn vào những gì được nói, và đó là SSE là mô hình đăng ký xuất bản trái ngược với bỏ phiếu liên tục trong trường hợp AJAX.
Nói chung, cả hai cách (bỏ phiếu và đăng ký xuất bản) đang cố gắng giải quyết vấn đề làm thế nào để duy trì trạng thái cập nhật trên máy khách.
1) Mô hình bỏ phiếu
Thật đơn giản. Trình duyệt (client) đầu tiên nhận trạng thái ban đầu (trang) và để cập nhật, nó cần định kỳ yêu cầu trạng thái (trang hoặc phần của nó) và xử lý kết quả vào trạng thái hiện tại (làm mới toàn bộ trang) một phần trong trường hợp AJAX).
Đương nhiên, một nhược điểm là nếu không có gì xảy ra với trạng thái máy chủ, tài nguyên (CPU, mạng, ...) được sử dụng không cần thiết. Một điều khác là ngay cả khi trạng thái thay đổi, khách hàng chỉ nhận được nó trong khoảng thời gian thăm dò tiếp theo, chứ không phải ASAP. Người ta thường cần phải đánh giá một thỏa hiệp thời gian tốt giữa hai điều.
Một ví dụ khác về bỏ phiếu là một spinwait trong luồng.
2) Publish-subscribe mô hình
Nó hoạt động như sau:
- (khách hàng yêu cầu đầu tiên và cho thấy một số trạng thái ban đầu)
- khách hàng đặt mua máy chủ (gửi một yêu cầu, có thể với một số ngữ cảnh như nguồn sự kiện)
- máy chủ đánh dấu tham chiếu đến ứng dụng khách đến một số kho lưu trữ tham chiếu của khách hàng
- trong trường hợp cập nhật trạng thái, hãy rver gửi một thông báo cho khách hàng dựa trên tham chiếu đến khách hàng mà nó nắm giữ; tức là nó không phải là một phản ứng với một yêu cầu nhưng một thông điệp khởi xướng bởi máy chủ
- khách hàng tốt unsubscribe khi họ không quan tâm nhiều hơn trong các thông báo
Đây là SSE, hoặc trong luồng sự kiện waitable, như khác thí dụ. Một nhược điểm tự nhiên, như đã nêu, là máy chủ phải biết về tất cả các khách hàng đã đăng ký của nó, tùy thuộc vào việc triển khai, có thể là một vấn đề.