gpt4 book ai didi

ajax - 不同浏览器的超时行为?

转载 作者:行者123 更新时间:2023-12-04 17:42:12 26 4
gpt4 key购买 nike

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

要求

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

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

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

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

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

------ 发生了什么事,得到回应。

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

如您所见,服务器持有请求并等待发生的事情,如果发生了某些事件,只需推送数据并完成请求。然后客户端将发出另一个请求。
请求中有滴答,所以如果在两个请求的间隙之间发生了事件,服务器知道客户端有待处理的事件。

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

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

最佳答案

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

相反,我会问您为什么要问 - 您将不得不处理超时,并且每次向浏览器传输的流量都不会阻止它。因此,最好在连接断开时简单地从客户端重新查询服务器 - 这就是为什么很多人推荐长轮询的原因之一,而您似乎正在尝试这样做。无论您选择流式解决方案还是长轮询,您都必须允许连接重置。

对于简单的隐藏 iframe 客户端设置,it's not too hard to do - XHR 请求同样容易,具体取决于您使用的客户端框架。

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

所以,总而言之 - 超时发生。你不能阻止他们。对您的客户端进行编码以在它们发生时重新连接(有一个限制以防止服务器停机),并且不要再担心了。除了更健壮之外,它还可能使您的代码性能更高,因为您不会定期向每个客户端发送无用的数据。

关于ajax - 不同浏览器的超时行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1192375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com