Có một số cách khác nhau để thực hiện việc này. Một số người trong số họ đã được trả lời ở đây, nhưng tôi muốn bao gồm một vài chi tiết cũng như suy nghĩ của tôi về họ.
1.Bỏ phiếu
Yêu cầu thường xuyên được gửi đến máy chủ để kiểm tra thông tin mới. Đây là cách tồi tệ nhất để làm điều này, nhưng có lẽ là dễ nhất. Nếu trang web của bạn sẽ có số lượng người dùng thấp, điều đó có thể đáng làm theo cách này.
Điều này có thể được thực hiện bằng cách sử dụng setInterval(myFunction, n)
trong javascript để gửi XMLHttpRequests
đến máy chủ mỗi n
mili giây. Sau đó, trên máy chủ, bạn trả lời thông tin này với thông tin mới của mình, khi bạn có, hoặc một số thông báo ngụ ý không có thông tin mới.
2. dài Polling
Khi trang web được tải, nó làm cho một yêu cầu đến máy chủ để biết mới. Máy chủ giữ kết nối mở cho đến khi có gì đó để gửi lại. Phương pháp này làm giảm lượng lưu lượng mạng được sử dụng, nhưng tăng các tài nguyên được sử dụng trên máy chủ. Bạn có thể sử dụng điều này cho một số ít người dùng, nhưng nó không có quy mô rất tốt.
Cách dễ nhất để thực hiện việc này là để trang xử lý yêu cầu AJAX chỉ cần chờ thông tin mới khả dụng, sau đó trả lời. Điều này có thể kết nối rất nhiều trên máy chủ của bạn. Vì vậy, sử dụng cẩn thận.
3. COMET
COMET về cơ bản là bỏ phiếu dài, nhưng máy chủ được thiết lập đúng cách cho nó. Nó biết rằng các kết nối này không phải là "thực" và nó sử dụng ít tài nguyên hơn để xử lý chúng. Đây là một giải pháp tuyệt vời cho vấn đề này, nhưng nó đòi hỏi rằng máy chủ được thiết lập rõ ràng cho mục đích này. Có các máy chủ COMET và COMET addins cho các máy chủ phổ biến khác, nhưng nó sẽ yêu cầu một số thiết lập và đôi khi một số tiền.
Thực hiện điều này trên .NET không phải là điều đơn giản nhất trên thế giới. Bạn có thể trả tiền cho các giải pháp, cố gắng tìm mã của người khác thực hiện điều gì đó tương tự hoặc tự mình viết mã. Tôi đã không tìm thấy bất kỳ giải pháp miễn phí phong nha cho việc này. Nếu ai đó có, xin vui lòng bình luận.
4. RIA
Một giải pháp khác sẽ được bao gồm Flash, Silverlight, hoặc Java Applet trên trang của bạn. Mọi người thường làm điều này bằng cách sử dụng một đối tượng 1x1 để họ có thể sử dụng Flash hoặc Silverlight để nói chuyện với máy chủ. Nếu bạn không nhớ thêm sự phụ thuộc, đây là một giải pháp tốt. Nếu bạn đã biết Silverlight hoặc Flash, nó có thể tương đối đơn giản để thực hiện.
Bạn có thể tìm thấy các hướng dẫn trên internet cho từng tùy chọn này.
5. Sockets Web
Nếu bạn đang ở trên cắt cạnh, bạn có thể nhìn vào Web Sockets. Nó chỉ có sẵn trong các bản dựng mới nhất của các trình duyệt hiện đại. Nó là một phần của HTML5, nhưng bây giờ nó có thể là thông số riêng của nó. Bất kể, điều đó có nghĩa là các trình duyệt cũ hơn sẽ không thể xử lý nó. Tuy nhiên, nếu bạn không ngại giới hạn bản thân với trình duyệt mới nhất, bạn có thể sử dụng tính năng tuyệt vời này.
Tôi tin rằng Chromium là trình duyệt duy nhất hiện hỗ trợ nó. Tuy nhiên, có công việc đang được thực hiện để thực hiện điều này trong Firefox và WebKit.
Tôi sẽ dành cho bạn những tranh cãi và chỉ đơn giản nói rằng điều này thực hiện chính xác những gì bạn muốn. Tóm tắt của spec nói tất cả.
Đặc tả này xác định API cho phép các trang Web sử dụng giao thức Web Sockets để liên lạc hai chiều với máy chủ từ xa.
Nợ cần chú ý
Nếu bạn quan tâm trong thế giới của Node JS, bạn không thể đi sai với Socket IO. Nó sẽ thực hiện tốt nhất của bất kỳ công nghệ có sẵn cho trình duyệt.
Kết luận
Lựa chọn tốt nhất là Socket.IO trên Node JS. Tuy nhiên, đối với một giải pháp ASP.Net, đi cho COMET hoặc Web Sockets, nếu bạn có thể. Nếu không, sử dụng Flash/Silverlight không phải là khủng khiếp. Cuối cùng, bỏ phiếu và bỏ phiếu dài nên là những khu nghỉ dưỡng cuối cùng. Bạn luôn có thể hỗ trợ một trong số này, sau đó rơi trở lại khác nếu không có hỗ trợ cho nó trong trình duyệt của khách hàng.
Bạn đang nói về thao tác "Đẩy" từ máy chủ web, thay vì yêu cầu mã phía máy khách yêu cầu mã mới, phải không? –
Chính xác! Tôi muốn phát hành một lệnh máy chủ kích hoạt một hành động của khách hàng. –