我想用Java開發一個桌面應用程序(我已經掌握了Java的基本知識)。它將運行在客戶端的計算機上,並將從託管在互聯網上的服務器中獲取信息。我可以設置一個計劃任務,每2分鐘連接一次服務器並檢查是否有更新/更改,但我認爲這不是一個好主意。有什麼辦法讓客戶知道這些變化嗎?例如,每當有更改服務器將發送通知給客戶端進行更新?服務器可能有不同的技術,例如Java如何通知Java桌面客戶端有關服務器的更改?
任何幫助將不勝感激,再次感謝!
我想用Java開發一個桌面應用程序(我已經掌握了Java的基本知識)。它將運行在客戶端的計算機上,並將從託管在互聯網上的服務器中獲取信息。我可以設置一個計劃任務,每2分鐘連接一次服務器並檢查是否有更新/更改,但我認爲這不是一個好主意。有什麼辦法讓客戶知道這些變化嗎?例如,每當有更改服務器將發送通知給客戶端進行更新?服務器可能有不同的技術,例如Java如何通知Java桌面客戶端有關服務器的更改?
任何幫助將不勝感激,再次感謝!
如果您使用Java Server,則可以使用JMS將消息從服務器發送到應用程序。
或者您可以使用Comet應用程序通過HTTP將消息推送到客戶端。
第三種方法是創建您自己的推送系統,您的客戶端連接到服務器以提供有關如何聯繫的一些信息,以及您在每次修改時通知每個客戶端的Observer/Observable模式。
資源:
推到客戶總是將是哈rd - 很大程度上是因爲防火牆。使客戶端從服務器上拉出來(使用HTTP)在大多數情況下更有可能工作。
現在,您目前每兩分鐘輪詢一次。那可能是適當的 - 或者根據你正在更新的內容,這樣做更爲少見(一天一次)。如果它是客戶端軟件的更新,罕見的更新是好的。如果它是聊天對話的更新,則兩分鐘時間太長 - 在這種情況下,您應該查看comet/long polling作爲一種技術。 (有多種技術可以實現長輪詢;您不必使用任何特定的功能 - 這就是爲什麼我將其描述爲技術而非其他任何內容的原因。)
+1針對JMS而不是Jon Skeet – willcodejavaforfood 2010-09-08 21:30:48