GWT和Android客户端(或其间的App Engine)之间的持久连接

时间:2011-12-27 15:55:18

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

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

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

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

提前致谢:)

2 个答案:

答案 0 :(得分:0)

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

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

这很好,因为您在浏览器客户端和Android客户端之间的邮件传递中具有奇偶性。它并不好,因为它不是原生的,可能会吃电池,不像C2DM。

理想情况下,我知道您希望Android的原生API使用渠道API消息。您可以对此问题进行投票,但遗憾的是我无法为其提供ETA:http://code.google.com/p/googleappengine/issues/detail?id=4189

答案 1 :(得分:0)

如果我正确理解了您的问题,那么您希望消息从服务器(在您的情况下为GAE)推送到Android应用而不使用 C2DM?在这种情况下,您可以尝试pubnub

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