0

我考虑使用 GAE 作为服务器来与瘦客户端通信 Android 手机。我的典型使用场景是:用户打开网页(GAE)并从远程设备请求一些信息设备获取消息,并通过网页将其发送回用户。

多亏了 GCM,向手机发送消息是小菜一碟。困难的部分是向用户返回响应。我唯一的想法是向数据存储插入响应,然后重复查询,但是有一些缺点:通信延迟和数据存储的过度使用及其配额。

我听说过并阅读过有关通道 API 的信息,但是当我使用 GAE 时,很有可能两个客户端都将连接到不同的机器。你有什么想法如何以正确的方式做到这一点?

为了让我的问题更清楚:让我们简化问题。我有一个 servlet 从 android 客户端获取消息。消息发送给使用 GWT 和另一个 servlet 登录并拥有自己的会话实例的用户。您知道如何将消息从一个 servlet 传递到另一个吗?据我所知,不可能通过一些自动的 sendMessage() 方法来完成。我只需要实现某种邮箱。此刻我看到 memcache 在这个角色中。完美的应该是亚马逊短信之类的服务,但是让我的应用程序在许多服务器之间分派让我有点不高兴。队列是另一个想法,但不是来自 GAE。我不希望在生产环境中标记为实验性的解决方案。

4

2 回答 2

2

通道 API 是您的答案。每个浏览器实例都应该打开一个由令牌标识的通道。您可以跟踪所有令牌,可能在某种会话数据中。然后您可以将消息发送到相应的浏览器。

到目前为止,我注意到有时消息无法发送。不经常,但有时。如果您的消息内容不重要,那可能没问题。就我而言,我构建了一个备用轮询 HTTP 查询。频道的好处是备份轮询对我来说不需要非常频繁。

于 2012-11-23T02:01:07.290 回答
1

尝试 Channel API 良好且可靠,我们在其中一个应用程序MobiTexter中使用,到目前为止还没有遇到任何问题。

于 2012-11-23T06:39:15.603 回答