我剛剛被要求減少我的GWT應用程序的流量。有一種方法可以檢查狀態。GWT:Timer是唯一讓我的應用程序與服務器保持同步的方法嗎?
此方法是一個包裝在Timer中的異步調用。我知道網絡應用程序是無狀態的,所有這一切,但我不知道是否有其他方式來做到這一點,或者如果每個人都有一個計時器在他們需要這種行爲時纏繞呼叫。
我剛剛被要求減少我的GWT應用程序的流量。有一種方法可以檢查狀態。GWT:Timer是唯一讓我的應用程序與服務器保持同步的方法嗎?
此方法是一個包裝在Timer中的異步調用。我知道網絡應用程序是無狀態的,所有這一切,但我不知道是否有其他方式來做到這一點,或者如果每個人都有一個計時器在他們需要這種行爲時纏繞呼叫。
您可以檢查出gwteventservice。它聲稱有辦法推送服務器事件並通知客戶端。
我有一種感覺,他們可能被實現爲長時間運行(掛起)客戶端到服務器RPC調用超時間隔(例如20秒),然後重新制定。如果在此期間發生事件,服務器將返回回調。
我沒有親自使用它,但知道使用它將事件推送到客戶端的人。看看docs。如果我的假設是正確的,這個想法是發送一個RPC調用到不返回(掛起)的服務器。如果服務器上發生事件,則服務器響應,並且該RPC調用返回該事件。如果沒有事件,該呼叫將在20 seconds超時。然後,以相同方式掛起的服務器進行新的調用,直到發生事件。
這實現的目的是將每個事件(如果有的話)或者每20秒鐘一次的呼叫次數(如果沒有的話)減少到服務器的調用次數。它看起來可以配置20秒的時間間隔。
我想如果沒有事件發回的數據量是最小的 - 可能完全取消回調,或沒有數據傳輸失敗,但我真的不知道。
這裏是ServerPush另一種資源 - 這很可能什麼用gwteventservice實現。
如果您需要客戶端從服務器獲取狀態,那麼您幾乎不得不打電話到服務器以獲取其狀態。
酷,簡單的回答,並沒有告訴我使用其他技術,並指示我不是瘋了XD – javaNoober 2012-02-08 23:21:22
運行在谷歌應用程序引擎,你可以用它們通道技術
http://code.google.com/intl/en-US/appengine/docs/java/channel/overview.html
有關服務器推小問題。它的理念是始終送話費,但只有當有變化,正確返回的東西? – javaNoober 2012-02-08 23:40:24
我已經更新了我的答案。從本質上說,當事情發生在服務器上,你應該只得到一個事件/響應。 – 2012-02-09 00:02:37