HTTP长轮询:服务器尝试“保持打开”(不立即回复)每个HTTP请求,只有在有事件要传递时才会响应。通过这种方式,始终存在一个挂起的请求,服务器可以回复该请求以便在事件发生时传递事件,从而最小化消息传递的延迟。
HTTP流式传输:服务器无限期地保持请求打开;也就是说,在向客户端推送数据后,它永远不会终止请求或关闭连接。
您还可以在RFC6202中找到这些方法的详细问题列表。每种方法都有其优缺点。
因此,在HTTP流传输期间,连接不会被终止:
使用HTTP流的应用程序的基本生命周期如下:我认为使用长轮询可能有更好的方法。您可以实现WebSocket连接。然后,您将拥有一条持久的、双向的连接到服务器。WebSocket是一个基于HTTP的升级协议,旨在避免像长轮询这样的“折中解决方案”技巧。
如果您想更详细地了解此内容:
https://www.rfc-editor.org/rfc/rfc6455
http://www.html5rocks.com/en/tutorials/websockets/basics/
如果您想支持无法建立WebSockets的旧浏览器,可以使用类似Dojox/Socket的东西,它会自动使用长轮询作为备用。
http://dojotoolkit.org/api/1.10/dojox/socket.html
https://www.sitepen.com/blog/2012/11/05/dojo-websocket-with-amd/