一、定义
● WebSocket是HTML5下的一种新的协议(本质上基于tcp协议)。
● 实现了浏览器与服务器全双工通信,能更好的节省服务器资源和宽带并达到实时通讯的目的。
● 持久化的协议
二、原理
- websocket约定一个通信的规范,通过一个握手的机制,客户端和服务器之间能建立一个类似tcp的连接,从而方便他们之间的通信。
- 在websocket之前,web交互一般是基于http协议的短连接或者长连接。
- 是一种全新的协议,不属于http无状态协议,名为"ws"。
三、websocket与http的关系
相同点:
- 都是基于tcp,都是可靠性传输协议。
- 都是应用层协议
不同点: - websocket是双向通信协议,模拟Socket协议,可双向发送或接受信息。
- HTTP是单向的
- websocket需要浏览器和服务器握手建立连接
- HTTP是浏览器发起向服务器的连接,服务器预先并不知道这个连接。
联系:
● websocket在建立握手时,数据是通过Http传输的。建立连接后,真正传输不需要HTTP协议。
总体交互过程: - 首先,客户端发起Http请求,经过3次握手后,建立起TCP连接;HTTP请求里存放WebSocket支持的版本号等信息,
如:Upgrade、Connection、WebSocket等; - 然后,服务其收到客户端的握手请求后,同样用HTTP协议回馈数据;
- 最后,客户端收到连接成功的消息后,开始借助于TCP传输信道进行全双工通信。
四、WebSocket优势
WebSocket连接建立后,数据以帧序列的形式传输。在客户端断开WebSocket连接或服务端终端之前,一直保持连接。在海量并发及客户端与服务器交互负载流量大的情况下,极大的节省了网络带宽资源的消耗,有明显性能优势,且客户端发送和接受消息时在同一个持久连接上发起的,实现了"真-长链接",实时性优势明显。
特点:
● 全双工通信方式,建立连接后客户端与服务端时完全平等的,可以互相主动请求。而Http长连接基于HTTP,是传统的客户端对服务器发起请求的模式。
● HTTP长连接中,每次数据交换除了真正的数据部分外,服务器和客户端还要大量交换HTTP header,信息交换率很低。websocket建立连接后,就不需要发送HTTP header就能交换数据。