GAE推送通知

时间:2015-01-19 15:08:26

标签: java google-app-engine

我仍处于尝试GAE的水平,我想知道GAE是否有可能以某种方式保持套接字无限期打开,或者可能产生某种推送消息。我想编写一个桌面应用程序,它将与GAE上运行的后端进行通信,并且每隔一段时间会显示一些通知,如果有些是由后端生成的,但我不太喜欢每隔几秒轮询一次服务器的想法。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

关于现有API的一些注释以及它们不能用于本机桌面应用程序的原因:

  1. Channels API是基于javascript的浏览器解决方案,因此不适用于原生桌面应用。
  2. XMPP API允许您的GAE应用程序充当XMPP客户端:发送和接收消息。它不作为服务器,也没有外部客户端连接到它的设施(需要外部XMPP服务器才能这样做)。
  3. Sockets API仅限出站。它不允许您打开长时间运行的服务器到客户端推送所需的侦听套接字。
  4. 出站套接字,其中服务器连接到客户端:大多数客户端都在NAT之后,因此即使很诱人,也无法实际建立服务器到客户端的套接字连接。即使您愿意深入研究STUN的世界,GAE也会限制服务套接字所需的线程数(基于选择的NIO不可用)。
  5. 在普通GAE实例上无法运行服务器到客户端的异步推送。然而,有两种实用的方法:

    1. 使用外部服务:根据连接数量,这可能是最便宜的(在时间和成本方面)解决方案。请参阅PusherPubNub等。
    2. 使用Managed VMs。它们运行完整的JVM(或Python,Go,Node.js),因此没有上述限制。您可以运行任何现有的发布/订阅服务器。