谷歌应用引擎似乎最近将频道创建的免费配额从每天8640降至100。对于我不愿意使用付费计划的业余爱好项目,我会感谢一些优化频道创建的建议。
docs中特别提到每个频道ID只能有一个客户端。如果有办法解决这个问题会有所帮助,即使它只适用于一台计算机上的多个客户端(例如多个标签页)
我想到我可以通过重复向服务器发送XHR请求以检查新消息来模拟通道功能,从而绕过限制。但是,我担心这种方法可能太慢了。是否存在符合此原则的现有图书馆?
答案 0 :(得分:5)
遗憾的是,每个频道ID限制的一个客户端并不容易。我们实际上允许两个,但这是为了处理用户刷新页面的情况,而不是实际的扇出。
那就是说,你当然可以为此实现自己的解决方法。我见过的一个技巧是使用cookie在浏览器选项卡之间进行通信。然后,您可以选择一个选项卡作为频道的“所有者”,并通过Cookie扇出数据。有关如何实现标签间通信的信息,请参阅此问题:Javascript communication between browser tabs/windows
如果您愿意接受某些性能权衡,则可以轮询而不是使用Channel API。渠道API提供的速度大约为100-200ms;如果你可以接受平均500毫秒,那么你可以每秒轮询。根据您发送的数据类型以及您在memcache中的适用程度,这可能是一个可行的解决方案。我的猜测是你最大的问题是实例时间。
例如,如果您有100个客户端,那么您将看到100qps。您应该尝试并查看是否可以在一秒钟内为您需要提供的数据提供100个请求,而无需启动第二个实例。如果没有,请继续增加延迟(即降低轮询频率),直到有1个实例能够满足您的请求为止。
希望有所帮助。