Websocket是一个持久化协议,相对于HTTP这种非持久协议而言。它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的,与HTTP一样基于已建立的TCP连接来传输数据。但是与HTTP协议不同的地方就是:WebSocket是一种双向通信协议,在建立连接后,WebSocket服务器端和客户端都能主动向对方发送或接收数据,就像Socket一样;WebSocket需要像TCP一样,先建立连接,连接成功后才能相互通信。
运行机制 传统的HTTP客户端与服务器请求响应模式,一个生命周期里只有一个或多个请求和一个或多个与之对应的响应。 如下所示:
而WebSocket模式下客户端与服务器响应模式,一旦WebSocket连接建立,在客户端或者服务端中断连接前,数据都以帧序列传输,不需要重启客户端或者服务端重新发起连接请求。
1.客户端发起请求 - Request Method:GET
- Status Code:101 Switching Protocols #101之后的数据传输采用Websocket协议
- Connection:Upgrade
- Sec-WebSocket-Extensions:permessage-deflate;
- Sec-WebSocket-Key:dfQAy9mlQ0EjD5MmvvsZaQ== #验证
- Sec-WebSocket-Version:13
- Upgrade:websocket #客户端支持websocket协议,如果服务器也支持就使用WebSocket协议
2.服务器解析,并返回握手信息,建立连接 - Connection:upgrade
- sec-websocket-accept:+mKC4huknIfMGJFOzclP9fO058g= #验证
- upgrade:websocket
3.传输数据(双向) 4.断开连接 |