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

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

现在,如果 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

可以看到,它得到更大的加时。

在长轮询,超时是你的朋友。你应该好好利用这个机会,而不是回避它。超时意味着你正在做的最长的轮询可能与浏览器。超时是你即使没有长轮询处理错误,所以没有额外的负担。

您可能需要阅读我对这个问题的反应,

轮询从J2ME客户一个HTTP服务器

虽然它是一个移动客户端,大部分规则适用于AJAX长轮询也。具体来说,我认为你会从一个通知系统,使长轮询仅用于事件通知中受益,所有的内容仍然正常拉。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top