【问题标题】:Persistent connection between GWT and Android client (or App Engine inbetween)GWT 和 Android 客户端(或中间的 App Engine)之间的持久连接
【发布时间】:2012-01-28 14:43:58
【问题描述】:

我想要实现的是用户浏览器(使用他的 Google 帐户登录)和他手机上的 Android 应用程序(也使用相同的 Google 帐户登录)之间的连接。我想将一堆格式为 JSON 的文本从 GWT 发送到设备,反之亦然。

我的第一个想法是向 Android 设备发送 C2DM ping 并唤醒一个直接连接到 App Engine 服务器或 GWT 客户端的服务(如果可能的话)。

我现在正在做的是一个带有从 GWT 到 App Engine 的 Channel API 的套接字。对于大量文本,我只需通过 Channel 向 GWT 客户端发送通知,然后使用 RPCall 获取数据。缺少 App Engine 和 Android 应用程序之间的连接。我能做的是一个方向的 C2DM 和另一个方向的简单 HTTP 请求。我不喜欢这个解决方案,因为 C2DM 有时可能真的很慢。有没有连接这两者的解决方案(GAE 和 Android 应用程序),甚至没有 App Engine 和 GWT 客户端和 Android 客户端之间直接连接的更好的解决方案?

提前致谢:)

【问题讨论】:

  • C2DM 听起来对我来说是正确的。它对你不起作用有什么原因吗?
  • 但有时 C2DM 可能需要几分钟才能让手机收到 ping。我想要的是 GWT 和 Android 客户端之间的聊天,我以两种方式发送文本。

标签: android google-app-engine sockets gwt websocket


【解决方案1】:

如果我正确理解您的问题,您是否希望将消息从服​​务器(在您的情况下为 GAE推送到 Android 应用程序使用 C2DM?这种情况你可以试试pubnub

编辑:当然你在这方面有一些选择(另一个是Urban Airship),但你会注意到它们并不便宜!

【讨论】:

    【解决方案2】:

    我不确定您所说的“GWT 和 Android 之间的直接连接”是什么意思——您是指 GWT 客户端 和 Android 手机之间的连接吗?如果是这样,那么不安装客户端软件就没有好方法;你需要某种服务器来代理消息。

    因此,鉴于您已经在使用 App Engine 和 GWT,并且 C2DM 可能太慢,您可以在 Android 上封装一个 HTML 页面并使用 Channel API。然后,当您收到消息时,让您的 javascript 客户端(同样,在 Android 上运行)调用容器来做任何您想做的事情。

    这很好,因为您的浏览器客户端和 Android 客户端之间的消息传递是平等的。这不好,因为它不是原生的,而且可能会消耗电池,不像 C2DM。

    理想情况下,我知道您想要一个用于 Android 的原生 API 来使用 Channel API 消息。你可以为这个问题投票,但很遗憾我不能为它提供 ETA:http://code.google.com/p/googleappengine/issues/detail?id=4189

    【讨论】:

    • 不,我并不是说我想要在没有 Android 应用程序的情况下建立它们之间的连接。我正在编写一个 GWT 客户端、一个 App Engine 服务器和一个 Android 应用程序。 Android 应用程序必须是原生的。我将稍微编辑一下问题,以便更清楚
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 2016-11-08
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    相关资源
    最近更新 更多