【问题标题】:Asynchronous android GAE communication using restlet使用restlet的异步android GAE通信
【发布时间】:2012-07-03 14:38:22
【问题描述】:

我想重复(每秒)从另一个 android 设备向 GAE 请求消息(对象或值)(如果 android 客户端没有在那里创建或更改某些东西)。我需要快速检查它,但我知道它大约每小时发生一次。

我使用restlet,我不想创建新线程并每秒从该线程获取轮询,因为这非常消耗电池。我也不想使用 C2DM。

有没有可能做到这一点?我在这里找到了一些关于 NIO 非阻塞 http 连接器的信息: http://restlet-code.1609877.n2.nabble.com/Push-data-from-server-using-a-live-HTTP-connection-td2906563.html

但是这里只描述了客户端,我也不知道这个解决方案是否可以在 GAE 上使用以及如何使用。有谁知道更多关于这种方法的信息?

非常感谢您。

【问题讨论】:

  • 我不使用 C2DM 的原因是我想在 restlet 中制作它,以便以后能够轻松地为 iPhone 创建客户端。您认为 C2DM 在这里真的是一个很好的解决方案吗?我想如果给定的客户端是 iPhone 或 Android 并决定使用 C2DM 还是 APNS,我将不得不在逻辑上的某个地方进行多样化?我对吗?是否可以将 APNS 与 GAE 一起使用?还是我应该更好地尝试将其全部保留在 restlet 中?
  • C2DM 很快就会被淘汰,取而代之的是适用于 Android 的 Google Cloud Messaging。您可能还想查看 Google Cloud Endpoints。
  • 是的,Cloud Endpoints 是真正的 GAE REST API。有人经历过从 Restlet 迁移到 Endpoints 的经历吗?有什么改进吗?冷启动更快?

标签: java android google-app-engine restlet


【解决方案1】:

作为 uniqush 的作者,我在FAQ 页面中针对这个问题创建了一个条目。

我可以在 Google App Engine 上使用 uniqush 吗?

是和不是。

如果你只是想在 Google App Engine 上使用 GCM,那么 uniqush-push 中有一些代码可以直接使用。

但是,由于 Google App Engine 不支持套接字连接,因此无法使用 APNS。在另一项工作中,如果您想在 Google App Engine 上设置服务器,则无论您使用什么软件/库,都无法向 iOS 设备推送任何通知。

我确实考虑过将 uniqush 移植到 Google App Engine。但由于这个事实,我认为在谷歌允许我们使用客户端套接字连接之前移植它可能会更好,或者提供一些连接到 APNS 服务器的方法。

同样,如果您正在考虑使用 Google App Engine 作为您的应用程序的服务器,请注意,您现在无法将通知推送到任何 iOS 设备。如果这个事实不困扰你,那就去做吧。

就个人而言,我建议您运行具有完全控制权的服务器。现在不贵。 Amazon EC2 或类似的云产品可能是运行 uniqush 的不错选择。

正如我上面所建议的,如果您想支持除 Android 之外的更多平台,使用具有完全控制权的(虚拟)服务器会是更好的选择。

如有其他问题,请随时回复。

【讨论】:

    【解决方案2】:

    为了防患于未然,我建议您为这两种设备提供单一的推送通知服务。您可以自行构建,也可以利用 uniqushthis 之类的东西

    Urban Airship 的 SDK 也是一个不错的选择,更多详情here

    【讨论】:

    • 我在看 uniqush,它的接缝很好,但文档很少。你有一些代码示例如何使用它吗?你确定它真的适用于 GAE 吗? Urban Airship 非常昂贵,因此无法用于我的目的。
    • 我没有用过。这些只是建议,您可以找到更多。这能回答你原来的问题吗?
    • 是的,它已经部分回答了我的问题,谢谢,但如果我能从某人那里得到以下部分的更具体的答案,我仍在等待:是否有可能做到这一点?我在这里找到了一些关于 NIO 非阻塞 http 连接器的信息:restlet-code.1609877.n2.nabble.com/… 在我看来这是最好的解决方案,但我找不到更多关于它的信息。
    【解决方案3】:

    this 与 Urban Airship 类似,但只是成本的一​​小部分。 API 允许您通过调用向用户发送 C2DM 消息。实施广播接收器后,当用户安装应用程序时,系统会提示他们接受消息。如果他们接受,则将令牌发送到识别用户的 C2DM 服务器。然后使用此令牌通过 C2DM 平台向他们发送消息。 Zend PHP 框架为此内置了函数,但如果可靠性是一个问题,请使用外部提供程序,如 Remote Queries 或 Urban Airship

    【讨论】:

      猜你喜欢
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      • 2017-05-21
      • 2011-08-30
      相关资源
      最近更新 更多