2015-11-27 108 views
0

我的應用程序中有一個投遞報告頁面。我的客戶總是有興趣知道貨物交付的最新狀態。自動更新網頁

我需要添加'自動刷新'功能,以便客戶無需手動刷新即可獲取最新狀態。這個需求面臨的挑戰是數百個請求將開始觸發服務器,而只有非常小的%會在交付狀態中進行一些更新。 我對在數分鐘內在我的應用程序服務器上進行數百次[未來可能會增長]無關緊要的命中感興趣。

解決方案試圖滿足要求: 我使用的WebSocket,這是我非羣集環境都不錯,但在集羣也開始Wildfly集羣架構挑戰失敗的原因[AJP不會得到升級]

解決方案我打算實施: 我可以將文件中的最新傳遞狀態推送到我的網絡服務器,並讓瀏覽器的請求使用靜態文件。在這種情況下,我的應用程序服務器不需要處理所有這些不相關的請求。

問題: 有沒有其他更好的解決方案來處理這個問題?

其他景點:

我使用的Ehcache來處理緩存我的應用程序。在服務器節點之間存在這些緩存對象的複製。所以這個緩存我可以使用incase需要共享服務器節點之間的一些數據。

這是一個JSF-Spring集成應用程序。

我使用Richface的a4j:websocket的push組件,它不是野蠅簇中的合適解決方案。

回答

0

您是否嘗試過尋找PrimeFaces的poll組件?

UPDATE:基於下面的評論,我想你需要的是COMET(或反向AJAX的任何工具)

+0

看來投票組件能夠做一個指定的時間間隔定期請求。這又會導致應用服務器的命中太多。感謝您的評論。 – Sam

+0

@Sam我用COMET的信息更新了答案。請檢查是否有幫助 – Optional

+0

https://en.wikipedia.org/wiki/WebSocket「在WebSocket之前,使用Comet通道可以實現端口80全雙工通信;但是,Comet實現並不重要,並且由於TCP握手和HTTP頭部開銷,對於小型消息來說效率不高,WebSocket協議旨在解決這些問題而不影響網絡的安全假設。 COMET將會是一個沉重的解決方案嗎?我會對此做更多的研究。 – Sam