HTTP长连接和短连接
在HTTP1.0中使用的是非持久连接,每个TCP连接最多允许传输一个对象。首先浏览器收到服务器的响应以后,会获得HTML文件,从而解析HTML文件中包含的其他URL。每次传输一个对象后,TCP连接就随之关闭。
HTTP1.1中使用持久连接,每个TCP连接可以传输多个对象。在建立TCP连接以后,服务器在发送响应以后,并不关闭该TCP连接。后续的请求和响应报文仍能在该TCP连接上传输。现在HTTP默认模式时使用带流水线的持续连接。
Websocket连接
Websocket握手阶段是借助于HTTP协议,握手完成以后,仍在刚才的TCP连接上完成后续的传输。
HTTP长连接和Websocket的区别
HTTP长连接的本质还是HTTP协议,工作模式依旧是一问一答。即:客户端发起一次请求,服务器回应最多一次响应。这个本质并没有得到改变,改变的只是在同一个TCP连接上可以进行多次请求和多次响应。Websocket不一样,客户端可以只请求一次服务器,然后服务器返回多次响应。即:当连接建立之后,服务器可以主动给客户端发送信息,这点是HTTP做不到的。
当然了,为了检查Websocket连接是否还在,前端会使用心跳检测,但这不影响当连接建立之后,服务器可以主动给客户端发送信息的本质。