WebSocket 是什么原理?为什么可以实现持久连接?

1.什么是WebSocket?

WebSocket是一种协议,是一种持久化协议,而HTTP是一种非持久协议(长连接,循环连接的不算)

WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系

WebSocket 是一种协议,基于 TCP 协议;HTTP 也是一种协议,基于 TCP 协议。

websocket约定了一个通信的规范,通过一个握手的机制,客户端和服务器之间能建立一个类似tcp的连接,从而方便它们之间的通信。
在websocket出现之前,web交互一般是基于http协议的短连接或者长连接。WebSocket协议本质上是一个基于TCP的协议,它由通信协议和编程API组成,WebSocket能够在浏览器和服务器之间建立双向连接,以基于事件的方式,赋予浏览器实时通信能力。既然是双向通信,就意味着服务器端和客户端可以同时发送并响应请求,而不再像HTTP的请求和响应。


连接要保持还是关闭是由你服务器应用来控制的。

首先HTTP有1.1和1.0之说,也就是所谓的keep-alive,把多个HTTP请求合并为一个,但是Websocket其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范而已,也就是说它是HTTP协议上的一种补充可以通过这样一张图理解
可以看到有交集,但是并不是全部。
另外Html5是指的一系列新的API,或者说新规范,新技术。Http协议本身只有1.0和1.1,而且跟Html本身没有直接关系。。
通俗来说,你可以用HTTP协议传输非Html数据,就是这样
再简单来说,层级不一样。

2.
 
websocket是一种全新的协议,不属于http无状态协议,协议名为"ws"这意味着一个websocket连接地址会是这样的写法:ws://**

 
 
 3.webSocket如何兼容低浏览器?

WebSocket是目前"唯一"的一个浏览器下的Socket的标准, 它是通过浏览器内部提供的API来实现访问的. 低版本的浏览器没有WebSocket这个标准, 就意味这些浏览器不允许用户通过它们来实现Socket通讯。

 那么怎么实现兼容低版本浏览器呢?

Adobe Flash socket、ActiveX HTML File(IE)、基于multipart编码发送XHR、基于长轮询的XHR

 
 
 
 
原文地址:https://www.cnblogs.com/GumpYan/p/5712355.html