我想在跨平台移动客户端(Android、PC - 用Ja va编写和 iOS 用Objective-C编写)和我的 Google AppEngine(Java)服务器之间实现双向通信。它应该:
- 允许每一方发起通信(在客户端连接后)。
- 具有相对较短的延迟(每 X 秒轮询一次是有问题的,据我了解,因为它在 AppEngine 上,所以不能长时间轮询 http 请求)。
- 支持最多只有几 KB 文本的消息,而且通常要小得多。
我曾考虑将 Channel API 与一些反向工程 Java 客户端一起使用,但这似乎是在冒险(因为它不受官方支持)。另外,我什至不确定是否有针对 Objective-C 的解决方案,而且我不想自己深入研究并实现它。
然后我考虑使用 XMPP。但是,我不确定如果不让我的用户输入 Jabber 帐户,这是怎么可能的,我不能(通信在后台)。有没有办法为我的客户创建一个临时用户?
C2DM 似乎也不是一个好的选择。它不是跨平台的,看起来很注重“通知”而不是交流,并且不保证消息传递的成功。
或者也许有一种我没有想到的完全不同的方法?这种类型的交流对我来说相对较新。
谢谢!
编辑:
由于我正在寻找后台通信,我想到了一个新选项:单个 XMPP 用户,资源作为客户端标识符。这意味着,我将为我的应用程序创建一个 XMPP 用户(例如:“AppBackgroundUser@domain.com”),并让客户端使用他们自己的唯一 ID 作为资源(“AppBackgroundUser@domain.com/UNIQUEID” )。这种方法是否有任何缺点或严重的安全漏洞?