2010-12-15 92 views
0

我有一個基於java的web應用程序(struts 1.2)。我有要求在前端(jsp)上顯示狀態。現在狀態可能會改變,我的服務器被另一臺服務器通知。但我希望將此狀態更改通知給瀏覽器。通知瀏覽器服務器上的事件

我不想每隔一段時間刷新一次。相反,我必須實現像在Gmail聊天,即完成。通過更改服務器上的事件來通知瀏覽器。

關於如何去做這件事的任何想法?

我正在考慮打開一個請求到服務器的狀態的請求,並在服務器端我會保持請求,並不會迴應,直到有狀態更改。任何指針,例如?

回答

1

最好的解決方案是使用XMPP協議。它是標準化的,許多開源解決方案將讓您在幾分鐘內開始。您可以使用Smack,StropheJSOpenfire的組合來讓您的基於Java的應用程序按需工作。

1

有一種稱爲長輪詢(Comet)的方法。它基本上向服務器發送一個請求。在服務器上創建的請求線程只是等待用戶的新數據,時間限制可能爲1分鐘或更長。當新數據可用時,它將被返回。

主要問題是解決服務器端問題,您不希望每個用戶都只有一個線程在等待新數據。當然,您可以根據您的後端使用一些異步方法。

編號:http://en.wikipedia.org/wiki/Push_technology

替代的方法是使用WebSockets。問題是今天所有的瀏覽器都不支持它。