2012-08-26 84 views
0

我們有一個Web服務器,一個客戶端應用程序和一個服務器應用程序。下圖描述了結構。如何通知Web服務器響應長輪詢?

enter image description here

該系統的工作原理是這樣的:用戶改變一些事情上的客戶端應用程序,例如改變本書的書名。它將發送一個TCP/IP包到服務器應用程序。我的期望結果是,瀏覽器中顯示的書名應始終自動更改。據我所知,Web瀏覽器應該保持與Web服務器的長輪詢請求。我的問題是,服務器應用程序如何通知Web服務器有關更改?我應該使用哪種技術?

所有的應用程序都是用Java編寫的。

回答

1

我建議你使用JMS隊列。當Web瀏覽器轉向服務器執行長輪詢時,它應該到達連接到隊列的servlet並調用阻止方法。 當客戶端應用程序通知服務器應用程序。應該將適當的消息發送到隊列中。此時阻塞將返回,servlet將向Web瀏覽器發送更新消息,並返回阻止,直到發送下一個通知。

爲了避免會話之間的不匹配,您可以使用動態隊列或(更好)一個隊列,並使用與當前會話ID相同的選擇器。

可以將消息發送到使用JSON序列化的Web客戶端。