有没有办法使用JavaScript保持HTTP连接?
简而言之,我认为javascript中长期存在的http连接的概念实际上围绕着一种称为COMET的通信方式.这可以通过几种不同的方式实现,但实质上涉及客户端(使用XmlHttp权限)立即从服务器请求数据,服务器保留响应直到某个事件触发它.收到此响应后,客户端立即发出另一个请求(它将再次挂在服务器端,直到需要发送内容).这模拟了服务器推送,但实际上只不过是以巧妙的方式使用的延迟响应.在最坏的情况下,可能存在相当高的延迟(即2个消息需要发送,因此周期必须重复两次,所有成本都涉及)但通常,如果消息传递速率较低,则会给出真实的合理印象.时间推动.
为这种通信实现服务器端是非常简单的,并且需要大量的异步通信,并发性问题等.编写一个可以在自己的线程上支持几百个用户的实现非常容易,但要扩展到数千个需要更加考虑的方法.
我注意到最后一个答案是在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