Http 在响应浏览器之前,我可以等待的安全时间是多少,而不会超时?

Http 在响应浏览器之前,我可以等待的安全时间是多少,而不会超时?,http,comet,long-polling,Http,Comet,Long Polling,我正在制作一个聊天应用程序,它与长轮询一起工作,以模拟从服务器到客户端的“推送” 基本上,浏览器会要求更新,如果有新内容,我会回复。否则,我将保持连接打开而不进行响应,直到有东西要发送回来 现在,如果30秒过去了,我还没有发送任何东西,那么我会发送一个响应,基本上是“NoNews”,客户端会再次进行轮询 我想做的显然是尽可能长时间地保持这种连接而不回复,在浏览器超时并放弃我之前。。。 我还没有找到关于每个浏览器的客户端超时是什么的好文档,而且似乎对所有浏览器都不一样 你们中有人申请过长时间的投票

我正在制作一个聊天应用程序,它与长轮询一起工作,以模拟从服务器到客户端的“推送”

基本上,浏览器会要求更新,如果有新内容,我会回复。否则,我将保持连接打开而不进行响应,直到有东西要发送回来

现在,如果30秒过去了,我还没有发送任何东西,那么我会发送一个响应,基本上是“NoNews”,客户端会再次进行轮询

我想做的显然是尽可能长时间地保持这种连接而不回复,在浏览器超时并放弃我之前。。。 我还没有找到关于每个浏览器的客户端超时是什么的好文档,而且似乎对所有浏览器都不一样

你们中有人申请过长时间的投票吗?
知道最长的安全超时时间是多少吗


谢谢

浏览器应检测XHR上的超时并发出另一个请求

更新:

检测XHR上的超时实际上很复杂,因为出于某种原因它不是内置的。当然,您还需要处理502/503响应等


不同浏览器的读取超时不同。例如,这些是IE的默认值

Internet Explorer 4.0 and Internet Explorer 4.01 - 5 minutes
Internet Explorer 5.x and Internet Explorer 6.x - 60 minutes
Internet Explorer 7 and Internet Explorer 8 - 60 minutes
正如你所看到的,随着时间的推移,它变得越来越大

在长轮询中,超时是您的朋友。你应该利用它,而不是逃避它。超时意味着您正在使用浏览器进行尽可能长的轮询。超时是一个即使没有长时间轮询也必须处理的错误,因此没有额外的负担

你可能想看看我对这个问题的回答


即使是针对移动客户端,大多数规则也适用于AJAX长轮询。具体来说,我认为您将受益于通知系统,只要轮询仅用于事件通知,并且所有内容仍能正常提取。

有趣的是,我如何才能做到这一点?另外,服务器是否可以检测到这一点?(ASP.Net 2.0)我知道我可以从技术上检查客户端是否仍然连接,但这是否100%准确?我担心的是这种竞争条件:客户端会超时,用户会收到一条消息,服务器会将其发送到它有句柄的连接,消息因为在客户端超时而无法发送,客户端发出的新请求会看到一个空消息队列在等待他,消息会丢失……在服务器端,当您尝试写入套接字时,超时连接将生成错误。具体如何检测这一点取决于您使用的服务器端技术,我对ASP.Net不是很熟悉。很可能,Response.Write(或者现在的任何东西)会产生某种错误。客户端,你需要做一些额外的工作,我已经用一些链接更新了我的答案,你可能会发现这些链接很有用。你可以让客户端在收到消息时发送确认。因此,如果您发送回一条消息,但没有收到确认,则将其留在队列中,直到他们重新连接。@kibibu:这几乎违背了尝试发出更少请求的目的(这就是为什么我首先要延长超时时间)。谢谢您的回答,这非常有趣。。。你在哪里找到IE的超时值的?我找不到像那样的东西。。。如果这是真的,那么我的应用程序在IE 7/8中就不能正常工作,因为我当前的典型等待时间是30秒+一点开销…+130秒是你开始遇到麻烦的地方。歌剧在这里也达到了极限。我们在WebSync中使用25s,以避免潜在的细微差异。@ZZCoder,看起来要么值已更改,要么先前的文档是错误的。我已经相应地更新了你的答案。事实上,IE中的超时时间越来越长。这是一个很好的信息。然而,浏览器并不是唯一会导致超时的东西。浏览器和服务器之间有各种各样的东西:客户端操作系统、代理、NAT路由器等等。。。所有这些都有可能让你断开连接(很好的情况),或者干脆断开连接,让连接两边都悬着。