2012-07-09 126 views
0

目前我們有一個Applet,它通過FTP,套接字和HTTP消息與我們的硬件和服務器進行交互。我被問及是否可以放下applet,然後使用顯示動態網頁和JavaScript的瀏覽器。我不相信這是可能的,因爲我的理解是,瀏覽器只能顯示對它發起的請求的響應,而我們的應用程序需要顯示它從硬件獲得的數據,而硬件僅在其傳感器被觸發時發送。將數據推送到客戶端瀏覽器的Web應用程序

我想過使用AJAX來定期輪詢硬件,但我相信同一個原點安全限制會阻止我輪詢不同地址的硬件設備。我可以通過讓各種硬件設備將所有更新發送到服務器來解決這個問題,但這會對我們當前配置的方式進行重大改變。還有一個性能問題 - 它是一個具有數百臺設備的國家應用,每天產生數百萬個事件。我必須能夠在3秒內做出響應,所以我必須非常頻繁地輪詢硬件(1秒或更少)以保持這種性能水平。

那麼我對web應用程序的理解是否正確?

是有辦法的瀏覽器中顯示的信息多個地址來

+0

相關:[我怎樣才能實現一個實時儀表板?](http://stackoverflow.com/q/6935016/102937) – 2012-07-09 18:10:09

回答

1

這是可能的。首先你是對的,瀏覽器不能使用AJAX直接連接到其他服務器。如果這些其他服務器實際上是一些硬件設備,我會稱這是一個優勢。您需要一臺服務器來接收所有流量。

但是,在現代瀏覽器和服務器中,您可以使用,和其他技術將數據從服務器推送到客戶端。基本上,你在客戶端保持一個開放的HTTP連接,並且每當服務器有一些數據時,它立即發送它,沒有任何延遲。與每隔幾秒輪詢一次相比,這是一項重大改進 - 您可以避免系統上的延遲和額外負載。

在Java的土地上你有來營救。

+0

謝謝 - 一個問題:我的客戶可以有一個單一的網頁與多個HTTP連接開放 - 每個服務器或設備一個?然後,JavaScript將收集數據並呈現單個網頁供查看和進行交互。 – BigMac66 2012-07-10 15:03:19

+1

@ BigMac66:並非如此,大多數瀏覽器將併發HTTP連接的數量限制爲2或4.這應該不成問題,例如Atmopshere允許您通過單個通道發送各種類型的事件並在客戶端上收聽它們 - 從邏輯上說,你有幾個「連接」。 – 2012-07-10 15:48:49

+0

托馬斯彗星維基你鏈接到你的答案中提到一個服務器組件。你需要添加一個特殊的服務器或模塊來實現一個基於慧星的應用程序嗎? – BigMac66 2012-07-11 20:05:46

相關問題