我正在开发将在Google AppEngine上运行的应用程序。

我计划让该应用程序的Web界面在许多其他情况下等待来自AppEngine服务器的通知。

理想情况下,我希望使用XMLHttpRequest()向服务器发出请求,该请求将一直等到应用程序发出下一个通知。

但是,AppEngine中似乎没有支持这种逻辑的类型(如果我错了,请纠正我)。这意味着我似乎只限于定期轮询。

所以问题是:


有人对如何最好地设计这种轮询机制有很好的建议,以避免遇到AppEngine的CPU使用率配额吗?随着“活动”客户端数量的增长,需要考虑可伸缩性。


我特别对从客户端进行轮询间隔的良好管理的建议以及随着“活动”客户端数量的增加有效处理AppEngine应用程序中的请求的提示感兴趣。

PS:从服务器轮询的信息类型通常是有关最近更新/添加的信息位的JSON编码信息(最近读为:过去几秒钟或几分钟)。

状态更新

到目前为止,我对这个问题的想法总结如下:


为了最大程度地减少轮询方法生成的每个单独请求所需的CPU负载:使用内存缓存可最大程度地减少收集答复信息所需的时间。需要找到一个很好的例子的指针。
为了最大程度地减少“活动”客户端向服务器生成的请求数量,我提供了以下几种线索:


如果用户未在客户端网页内进行有效交互(即未单击任何内容),则使对服务器的连续轮询请求之间的等待时间逐渐变长。
将其他请求类型带回服务器,即将轮询请求的结果包含在其他请求结果中,以节省请求数。



欢迎提供注释和代码示例指针!

最佳答案

要么...

您可能对某些pubsub实现感兴趣。就像由Google和Jaiku的人制作的古老pubsubhubbub一样。

关于javascript - 来自众多“事件”客户端的AppEngine应用程序的可扩展轮询?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/633999/

10-12 21:00