如何在Google AppEngine上实现“实时”消息传递?

时间:2010-04-17 22:31:39

标签: javascript python google-app-engine comet

我正在Google AppEngine上创建一个Web应用程序,我希望在某些事件发生后尽快通知用户。问题类似于聊天服务器,因为我需要在一个连接上发生某些事情(有人在聊天室中写消息)以传播到许多其他连接(该聊天室中的其他人获取该消息)。为了从服务器到客户端获得快速更新,我计划使用XmlHttpRequest进行长轮询,希望AppEngine不会干扰除可能导致超时之外的干扰。然而,真正的问题是AppEngine上的连接之间的有效通知。

在AppEngine上是否支持这种不涉及忙等待的交叉连接通知?我能想到的唯一工具就是使用数据存储(慢速)或内存缓存(不可靠),而且它们都不会让我避免忙碌等待。

注意:我了解AppEngine上的XMPP支持。它是相关的,但我想要一个基于浏览器的解决方案,XMPP不向用户发送消息。

3 个答案:

答案 0 :(得分:4)

App Engine上的请求限制为30秒执行时间,这使得长轮询很困难。此外,您需要将平均执行时间保持在较低水平,否则您将很快用完实例来执行查询 - 如果您的应用程序速度相当快,App Engine将只提供新实例。出于这些原因,App Engine上非常强烈建议不要使用Long Polling。

但是,如果您准备等待一段时间,roadmap包括“支持浏览器推送(Comet)通信”,这正是您正在寻找的。

答案 1 :(得分:1)

App Engine路线图支持Comet,否则您将无法实现此目标。

答案 2 :(得分:1)

您可以随时使用托管的彗星服务,例如WebSync On-Demand。无论您使用什么类型的服务器进行托管,这都可以让您推出事件。