2010-12-20 59 views
0

我處於一種情況,我希望能夠通知我的網站訪問者在服務器上發生的事件。隨時從服務器向Web瀏覽器發送消息的方法?

想:

  • 網站訪問者等待那需要很長的時間,並在服務器上的後臺運行導出或報告,需要在出口做是爲了通知遊客。

  • 網站訪客在等待來自一個銷售代表的聊天消息,需要當消息被髮送給他們,通知遊客。

我能想到的幾個方法可以做到這一點:

  • 保持HTTP連接到服務器 永遠開放
  • 不斷輪詢 HTTP服務器每秒鐘檢查是否 有新消息
  • 編寫Java 小應用程序,該應用程序持有打開 的連接到Java服務器進程

這些都不是特別優雅的解決方案......有沒有更好的方法來做到這一點?

回答

0

就我而言,解決此問題的最佳方法是讓客戶端輪詢服務器。我不知道有什麼辦法強制信息到客戶的瀏覽器。

我認爲從某種JavaScript/AJAX輪詢將是理想的。

0

據我所知,你不能從java小程序打開套接字(通過網絡接口連接)。這是安全政策的一部分。

2

HTTP是一個客戶端 - 服務器協議,因此它不允許服務器啓動的通信。

對於這種情況有很多解決方法,您已經提出了大部分解決方案。

  1. 最常見和最低技術的技術只是輪詢。當您搜索航班時,您可以在大多數在線旅行社查看此信息。
  2. 保持連接處於打開狀態,直到超時,然後打開另一個等待服務器發送消息的消息,稱爲Comet,它的實現方式很多,有時甚至可以使用Java Applet。
  3. 執行此操作的最新標準方法是使用WebSockets,它爲您提供全雙工(雙向)通道,您可以在其中執行任何操作。這是一個全新的協議,它處理HTTP只是爲了打開連接。唯一的缺點是它比較新,所以請檢查瀏覽器的兼容性。結帳demos
相關問題