HTTP长轮询 - 超时最佳做法

时间:2016-05-23 12:30:30

标签: javascript ajax http long-polling

我玩javascript Ajax和Long Polling。 尝试找到服务器响应超时的最佳值。

我阅读了很多文档,但找不到详细的超时解释。

有人选择20秒,其他30秒......

我在图上使用逻辑 HTTP Diagram

如何为超时选择更好的值? 我可以用5分钟吗? 这是正常的做法吗?

PS:可能的Ajax客户端Internet连接:以太网RJ-45,WiFi,3G,4G,还有NAT,代理。

我担心在某些情况下长时间超时可能会被第三方丢弃。

1 个答案:

答案 0 :(得分:3)

也许你对英语的掌握是问题所在,但它的连接生命周期(连接开启和关闭之间的时间)你需要担心的不仅仅是超时(没有活动的时间长度,之后连接将会被终止)。

尽管存在websockets,仍然有很多部署的硬件会丢弃连接,无论活动(以及一些会寻找不活动),它认为流量是HTTP或HTTPS - 有时作为设计错误,有时作为本土缓解sllickis攻击。您拥有3G和4G客户端意味着您可能会遇到5分钟的生命周期问题。

不幸的是,没有神奇的解决方案来了解普遍适用的方法。关键是要了解用户的分布范围。如果它们全部在您的局域网上并直接连接到服务器,那么您应该能够使用相对较大的值,但是将持续时间设置为无限将显示您的应用程序中的任何内存泄漏 - 有时最好立即刷新反正无论如何。

如果服务器和客户端之间存在除集线器和交换机之外的基础结构,则需要提供一种机制来检测和重新建立已断开的连接,而不管时间长短。当你找到了如何做到这一点,然后:

  1. 断开的连接只是一个轻微的性能故障而且对功能没有显着影响

  2. 然后添加记录丢弃连接的功能,从而确定最佳连接时间以消除(1)中描述的小问题

  3. 是微不足道的。