我正在爲android應用程序編寫應用程序,其中兩個設備應該通過互聯網相互通信。除此任務外,他們還通過REST與EJB3服務器進行通信。所以我決定一舉兩得,並使用REST + EJB3在兩個配對的Android設備之間傳輸數據。 所以我實現的情景是這樣的:通過http REST和EJB3連接兩個android應用程序
- 這兩個設備連接到服務器並獲取會話ID。
- 第一設備將數據發送到第二設備
- 服務器獲取數據,但並沒有結束HTTP請求,而是付諸等待池
- 第二設備要求數據
- Server中的數據傳輸到第二個設備並釋放第一個設備的等待連接(和線程)。
- 如果沒有第一個或第二個設備請求,則對方等待服務器端的超時,然後再次發送請求。我們需要等待服務器端的數據在數據到達後立即停止響應。
因此,在這種模式中我看到兩個缺點: - 在服務器端等待線程 - 他們消耗服務器資源,並作爲結果限制服務器的吞吐量 - 如果服務器線程將不會等待一個答案有超時,那麼客戶應該重複請求並花費大量流量。
這種問題的最佳實踐解決方案是什麼?
P.S:忘了提及兩臺設備應該儘可能平滑和快速地交換數據。
感謝您的鏈接,但是如果我需要從版本1.6開始在Android上運行我的應用程序,該怎麼辦。據我瞭解C2DM支持僅在2.2版本中添加... – 2011-05-16 18:08:29
沒有推 - 你不能達到「順利和快速」的要求。您可以使用設備A將數據寫入服務器,但設備B必須定期進行更新。這樣做往往會導致電池無法使用。從我所知道的你不能依賴設備和服務器之間的連接。 IP可能會改變,無線開關等。 – katit 2011-05-16 18:23:36
Yeap,我也知道這一點,這就是爲什麼我問這個問題。但我真的需要從1.6開始的所有版本的解決方案。任何其他想法? – 2011-05-16 18:53:57