google-app-engine - GAE 与客户端的双向通信(Java/iOS 客户端的 channel API 替代方案,或者 XMPP)?

标签 google-app-engine xmpp channel-api

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

5年前关闭。




Improve this question




我想实现 双向通讯在跨平台移动客户端(Android、PC - 用 Java 和 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” )。这种方法有什么缺点或严重的安全漏洞吗?

    最佳答案

    我能想到的两种选择:

  • 您可以在 Java 应用程序中嵌入一个 HTML 页面,并将 Channel API 用于其匿名端点。然后在收到消息时向您的应用发出信号。这不会受到 Channel API 实现中变幻莫测的变化的影响。
  • 如果您想使用 XMPP API,您需要某种类型的 XMPP 帐户是正确的。您可以考虑在 AWS 或其他地方运行一个非常简单的 XMPP 服务器并将您的客户端连接到该服务器;然后您可以从您的 App Engine 应用程序向您自己服务器上的地址发送消息。 ejabberd 似乎是首选服务。
  • 关于google-app-engine - GAE 与客户端的双向通信(Java/iOS 客户端的 channel API 替代方案,或者 XMPP)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9076492/

    相关文章:

    python - 如何覆盖时间戳字段以进行单元测试?

    google-app-engine - 带有 AppEngine 的 Android Studio - Gradle 依赖项

    安卓+应用引擎 : Unable to create media player

    XMPP 白名单?

    ios - XMPP muc room 一旦用户离线 iOS

    安卓常连接网站

    python - gae、python、onesignal --- onesignal 玩家标签不会在仪表板上更新?

    authentication - 支持基于客户端证书的身份验证的 Jabber 客户端

    使用 ChannelAPI 的 Android Wear 录音机

    python - 用 Python 在 Google App Engine 中实现 Comet/Server 推送