不同的浏览器的超时行为?(Timeout behavior of different browser

2019-06-26 23:34发布

我写基于AJAX / COMET的在线聊天室。 我的设计是:

请求

-----------------等待------------------------->发送转储数据

-----------------等待------------------------->发送转储数据

-----------------等待------------------------->发送转储数据

-----------------等待------------------------->发送转储数据

-----------------等待------------------------->发送转储数据

------事情发生,得到响应。

另一个请求..... ....

正如你看到的,服务器一直保持请求并等待事情发生,如果有一些事件发生,只是把数据和结束请求。 然后客户端将issuse另一个请求。 还有就是在打勾的要求,因此,如果有事件发生两个请求betweenhe牛逼的差距,服务器知道有客户端当前事件。

浏览器超时之前,服务器还发送一些闲置的数据,以防止客户端的超时。

现在,来这里的问题:什么是不同的浏览器超时行为? 我知道,浏览器发送请求,并等待数据,如果它花费太长时间等待,它就会超时。 但什么是不同的浏览器的那些超时行为? 并有可以控制浏览器的超时行为的任何头? 通过了解浏览器的超时行为,这样我就可以决定如何处理这些问题。 我在哪里可以找到这些数据?

Answer 1:

实际上,由于客户端可以经历代理,超时为不同浏览器的确切值并不意味着你会觉得多。

相反,我会问你为什么要问 - 你将不得不处理超时,并没有流于浏览器的量是要防止它每一次。 所以它会是最好简单地从当连接断开客户端重新查询服务器 - 这是一个原因,为什么很多人推荐长轮询这是你仿佛是试图做。 无论您选择的是流媒体解决方案或长轮询,你必须允许连接重置。

对于一个简单的隐藏的iframe客户端安装, 这不是太难的事 -这是对XHR请求同样很简单,这取决于你正在使用的客户端框架。

对于大部分现代浏览器超时似乎是相当大的 ,在IE(60分哇?),并在较短的FF(about:config中说300秒-克朗) -但正如我所说,它不能帮助你对代理,其中超时可以是短至2分钟或更少,这取决于代理管理员如何进行配置的。

因此,在总结 - 超时发生。 你无法阻止他们。 代码客户端发生的时候(有限制,以防止对服务器关闭旋转)重新连接,并没有进一步的担心。 除了是更强大的,它可能会也让你的代码更好的性能,因为你不会定期抽无用的数据每一位客户。



文章来源: Timeout behavior of different browsers?