什么是websocket
- websocket是HTML5下一种新的协议(本质是基于tcp的网络协议)
- 实现了浏览器与服务器的全双工通信,能更好的节省服务器资源和带宽,同时达到实时通讯的目的
- 是一个持久化协议(除非主动关闭连接或错误导致断开,否则不会断开)
websocket原理
- websocket约定了一个通信的规范,通过一个握手的机制,客户端和服务器之间能建立一个类似tcp的连接,从而方便它们之间的通信;
- 在websocket出现之前,web交互一般是基于http协议的短连接或者长连接;
- websocket是一种全新的协议,不属于http无状态协议,协议名为"ws";
websocket与http关系
相同点
- 都是基于tcp传输协议
- 都是可靠性传输协议
- 都是应用层协议
不同点
- websocket是双向通信协议,可双向发送或接收信息;HTTP是单向的;
- websocket是需要通过浏览器和服务器握手建立连接的;
- HTTP是浏览器向服务器发起的连接,服务器预先不知道
联系
websocket在建立握手时,数据是通过HTTP传输的,在建立连接之后,真正传输数据是不会通过HTTP的。
总的过程
- 首先,客户端发起http请求,经过3次握手后,建立起TCP连接;http请求里存放WebSocket支持的版本号等信息,如:Upgrade、Connection、WebSocket-Version等;
- 然后,服务器收到客户端的握手请求后,同样采用HTTP协议回馈数据;
- 最后,客户端收到连接成功的消息后,开始借助于TCP传输信道进行全双工通信。