【问题标题】:How long before a browser request dies?浏览器请求多久结束?
【发布时间】:2011-08-15 16:51:43
【问题描述】:

我正在尝试在我的应用上实施一些推送技术。我打算为此使用 node.js,但我认为这与我的问题无关。我要做的基本上是对服务器进行长轮询,并且据我了解 nodejs 工作的事件驱动方式,我不必太关心服务器端的东西。

我唯一担心的是客户端:浏览器会在多长时间后停止等待答案?这是一个编程问题,因为我需要在这段时间用完之前发布一个响应,以便重新加载长轮询。

附带问题:当浏览器停止等待时,它会对请求给出什么答复?

【问题讨论】:

    标签: http long-polling


    【解决方案1】:

    我以前做过类似的事情,问题的答案很简单:这取决于浏览器,以及用户如何配置它。

    在 FF 中,about:config 中的某处有一个设置来控制它(我忘记了设置是什么,确切地说)。 IE 的默认超时在注册表中进行控制,并记录在 here 中。我从来没有找到 Chrome 或 Opera 的答案——我不认为它是可控的。 Opera 似乎在 20 秒左右没有收到数据后放弃了,但它似乎也有所不同 - 不知道为什么。

    我得出的结论是,最好的办法是设计您的架构,以便定期重新加载页面,或者如果您使用 AJAX,请定期取消请求并开始一个新请求(我发现 1 分钟效果很好)。此外,每隔几秒就将少量数据推送到浏览器,因为这将防止 Opera 放弃。您可以简单地推送一个javascript:void(0); 事件来保持连接处于活动状态,但实际上并不在客户端执行任何操作。

    回答你的附带问题:没什么。浏览器简单地关闭 TCP 连接,不再交换数据。服务器如何处理这不再是浏览器关心的问题。

    【讨论】:

    • 哈哈这不是什么好消息,但非常感谢 :) 现在等不及 WebSockets -.-
    猜你喜欢
    • 2012-05-29
    • 2023-03-10
    • 2014-10-02
    • 2016-06-15
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 2013-02-08
    相关资源
    最近更新 更多