简单聊聊 WebSocket
1、简介
WebSocket 是一种在单个 TCP 连接上进行 全双工 通信的协议。
扩展:
WebSocket 与 Socket 的区别
- WebSocket 是应用层的一个通信协议;
- Socket 是对 TCP(或UDP)抽象封装的一组接口,用于应用程序与运输层之间的通信。
WebSocket 与 HTTP 的区别
- WebSocket 是全双工的通信协议
- HTTP 是单工的通信协议
2、建立连接
-
Request Header
- Connection:Upgrade(升级协议)
- Upgrade:websocket(升级成 websocket 协议)
- Sec-WebSocket-Key:随机 Base64 码
-
Response Header
- 101 响应(Switching Protocols,协议切换)
- Connection:Upgrade(升级协议)
- Upgrade:websocket(升级成 websocket 协议)
- Sec-WebSocket-Accept:加密后的 Base64 码
3、解决的问题 —— 服务器与客户端的双向通信问题
- HTTP 定时轮询(伪服务器推)【单向】
- 客户端 每隔一段较短的时间 就向 服务器 发送 HTTP 请求;
- 缺点:产生较多的请求头消耗网络资源,服务器需要频繁处理请求。
- 长轮询【单向】
- 客户端 向 服务器 发送 HTTP 请求后,就进入等待状态,直到 服务器回复 或 超过最大等待时间,就发起下一个 HTTP 请求;
- 缺点:服务器需要消耗较长的等待处理时间。
- WebSocket【双向】
- 客户端 仅需要发送一个 HTTP 请求就可以建立 WebSocket 连接,建立连接之后,客户端和服务器就可以进行双向通信;
- 缺点:需要建立连接。