Mẫu quan sát trên HTTP và TCP / IP (Máy chủ-Máy khách)


9

Tôi có một máy chủ và nhiều khách hàng (khoảng 50 khách hàng) kết nối với máy chủ đó dựa trên một ứng dụng web, tất nhiên dựa trên giao thức HTTP, do đó sử dụng TCP / IP (sửa tôi nếu tôi sai, vì tôi 'Tôi không thực sự giỏi về mạng).

Vấn đề là, tôi nên phát triển một cơ chế cảnh báo, trong đó, khi ai đó gửi biểu mẫu có giá trị nguy hiểm, người quản lý (cũng được kết nối qua cùng một ứng dụng web) sẽ nhận được thông báo bật lên trên màn hình của anh ta, gần như thật -thời gian (ngay lập tức).

Tuy nhiên, vì giao thức HTTP không trạng thái, tôi hơi bối rối ở đây. Tôi không biết làm thế nào tôi có thể thực hiện điều này.

Một trong những giải pháp có thể là sử dụng JavaScript cùng với setInterval()chức năng để lấy dữ liệu mỗi giây từ máy chủ. Nhưng điều này có vẻ hơi bẩn đối với tôi và không chuyên nghiệp.

Các bạn có ý tưởng nào để thực hiện một giải pháp khác không?


Bài đăng này có thể giúp stackoverflow.com/questions/640488/
Khắc

Những loại khách hàng? Khách hàng mỏng (dựa trên trình duyệt) hoặc khách hàng nặng?
ysdx

@ysdx, nghĩ khách hàng. Khách hàng chỉ hỗ trợ trình duyệt.
Saeed Neamati

Câu trả lời:


4

Bạn nên sử dụng một số loại ajax đẩy (xem Comet ) để thông báo cho khách hàng. Nó có thể loại bỏ nhu cầu bỏ phiếu, về cơ bản, bạn giữ một kết nối được thiết lập mở có thể được sử dụng để thông báo cho trình duyệt về các sự kiện phát sinh. Tuy nhiên, điều này không hoạt động với tất cả các trình duyệt. Bạn rơi trở lại "bỏ phiếu dài" trong những trường hợp như vậy.


6

Tôi nghĩ rằng đây là loại lý do WebSockets được tạo ra. Nếu bạn không cần khả năng tương thích với các trình duyệt cũ hơn, bạn có thể muốn sử dụng nó thay vì bỏ phiếu. Bạn có lẽ nên sử dụng bỏ phiếu như một dự phòng.

Tôi không chắc chắn mức độ ổn định của các thông số / triển khai hiện nay (nó không ổn định cách đây không lâu). Có vẻ như thông số kỹ thuật mới nhất được triển khai trong Firefox 6 và Chromium 14.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.