Ajax 不同浏览器的超时行为?

Ajax 不同浏览器的超时行为?,ajax,browser,timeout,comet,Ajax,Browser,Timeout,Comet,我正在写一个基于AJAX/COMET的在线聊天室。我的设计是: 请求 -----------------等待------------------->发送转储数据 -----------------等待------------------->发送转储数据 -----------------等待------------------->发送转储数据 -----------------等待------------------->发送转储数据 -----------------等待------------

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

请求

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

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

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

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

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

------发生了什么事,请回复

另一个要求 .....

如您所见,服务器持有请求并等待发生了什么事情,如果发生了什么事件,只需推送数据并完成请求。然后客户端将发出另一个请求。 请求中有滴答声,所以如果两个请求的间隔之间发生了事件,服务器就会知道客户端有挂起的事件

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


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

实际上,由于客户端可能要通过代理,不同浏览器的显式超时值并没有您想象的那么重要

相反,我想问你为什么要问——你必须处理超时问题,而且每次都无法通过流媒体传输到浏览器来阻止超时。因此,最好是在连接断开时从客户端重新查询服务器,这也是许多人推荐长轮询的原因之一,而长轮询正是您想要做的。无论您选择流式解决方案还是长轮询,都必须允许连接重置

对于一个简单的隐藏iframe客户端设置,XHR请求也同样容易,这取决于您使用的客户端框架

大多数现代浏览器的超时时间似乎在IE中(60分钟?哇),在FF中更短(大约:config说300秒-eek)-但正如我所说的,这对代理没有帮助,代理的超时时间可能短到2分钟或更短,这取决于代理管理员如何配置它

总之,超时是会发生的。你不能阻止他们。编写客户端代码,使其在发生时重新连接(有一个限制,以防止服务器停机),无需进一步担心。除了更加健壮之外,它还可能使您的代码更加高效,因为您不会定期向每个客户机发送无用的数据。

看看这个答案