如何保持HTTP连接活着?

时间:2009-11-08 22:37:50

标签: javascript http

有没有办法使用JavaScript保持HTTP连接?

2 个答案:

答案 0 :(得分:7)

简而言之,我认为javascript中长期存在的http连接的概念实际上围绕着一种称为COMET的通信方式。这可以通过几种不同的方式实现,但主要涉及客户端(使用XmlHttp权限)立即从服务器请求数据,服务器保留响应直到某些事件触发它。收到此响应后,客户端立即发出另一个请求(将再次挂起在服务器端,直到需要发送内容)。这模拟了服务器推送,但实际上只不过是以巧妙的方式使用的延迟响应。在最坏的情况下,可能存在相当高的延迟(即2个消息需要发送,因此周期必须重复两次,所有成本都涉及)但通常,如果消息传递速率较低,则会给出真实的合理印象。时间推动。

为这种通信实现服务器端远非微不足道,并且需要大量的异步通信,并发性问题等。编写一个可以在自己的线程上支持几百个用户的实现非常容易,但要扩展到数千个需要更加考虑的方法。

答案 1 :(得分:5)

我注意到最后一个答案是在2009年给出的。哦,我多么记得那些日子。但从那以后发生了很多好事;所以我会添加这个只是为了让人们知道要寻找什么。 HTTP 1.0提供了“保持活动”请求属性,这意味着应该为进一步的请求维护连接。在HTTP 1.1中,这成为默认值。如果你不想重用连接(如果你想对它好一点),你实际上必须选择退出它。

“WebSockets”的新标准实际上为您提供了全双工持久连接。所有最新版本的流行浏览器都支持WebSockets,如果您安装Google Chrome Framework(这意味着Google软件实际上正在开展工作),您甚至可以在MSIE中使用它们。微软称IE在版本10中支持它,但我自己没有尝试过。您需要的是连接到的内容,例如http://highlevellogic.blogspot.se/2011/09/websocket-server-demonstration_26.html