2011-08-15 63 views
0

我试图在我的一个应用程序上实现一些推技术。我打算使用node.js,但我不认为它与我的问题有关。我要做的事情基本上是对服务器进行长时间轮询,并且据我了解nodejs的事件驱动方式,我不必关心服务器端的东西。浏览器请求死亡之前多久?

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

侧面问题:当浏览器停止等待时,它会给请求提供什么答案?

回答

0

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

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

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

回答你的问题:没有。浏览器只是简单地关闭TCP连接,不会交换更多数据。浏览器不再关心服务器如何处理这个问题。

+0

哈哈,这不是真的好消息,但非常感谢:)现在不能等待WebSockets -.- – Cystack