我想實現一個跨平臺的移動客戶端(安卓,PC - 寫在的Java和iOS寫在Objective-C的)之間雙向通信和我的谷歌的AppEngine(的Java)服務器。它應該:與客戶端的GAE雙向通信(針對Java/iOS客戶端或XMPP的通道API備選方案)?
- 允許雙方發起通信(客戶端連接後)。 (對每X秒輪詢是有問題的,並且據我瞭解,由於它位於AppEngine上,長輪詢http請求不是一種選擇)。
- 支持消息最多幾KB的文本,通常要小得多。
我已經考慮在一些反向工程Java客戶端上使用Channel API,但是這似乎是一個機會(因爲它沒有官方支持)。另外,我甚至不確定Objective-C是否有解決方案,我不希望自己潛入並實施它。
然後我考慮使用XMPP。但是,我不確定如果沒有我的用戶輸入一個Jabber帳戶,我不能這樣做(通信在後臺)。有沒有辦法爲我的客戶創建一個臨時用戶?
C2DM似乎也不是一個好選擇。它不是跨平臺的,它似乎非常注重「通知」而不是通信,並且不能保證消息傳輸的成功。
或者也許有一種完全不同的方法我沒有想到?這種類型的溝通對我來說是比較新的。
謝謝!
編輯:
因爲我在尋找後臺通信,一個新的選項浮現在腦海:一個XMPP用戶,以資源爲客戶標識符。這意味着,我將爲我的應用程序創建一個XMPP用戶(類似於:「[email protected]」),並讓客戶端將其自己的唯一ID作爲資源連接(「[email protected]/UNIQUEID」 )。這種方法是否存在缺陷或嚴重的安全缺陷?
對於從服務器到客戶端的通信,您是否考慮過第三方推送解決方案,例如http://beaconpush.com/? – 2012-01-31 09:30:32
謝謝。我還沒有找到符合上述所有要求的解決方案。具體來說,糾正我,如果我錯了,但beaconpush旨在網頁(使用JavaScript等),而我需要與我的本機應用程序的溝通。 – DannyA 2012-01-31 09:59:21
我承認根據你的問題,我沒有從本機客戶端使用beaconpush,但我得到了他們的底層API是REST API的印象,編寫與其API通信的客戶端應該適用於允許HTTP請求的本地環境。我在他們的開源貢獻頁面http://beaconpush.com/guide/contributions/上看到了一個輕量級的C#客戶端,所以我認爲Objective-C和Java的客戶端是可能的。 – 2012-01-31 10:12:58