了解 WebSocket
WebSocket
Websocket 处于应用层协议,他必须依赖 HTTP 协议进行一次握手,握手成功后直接通过单个 TCP 传输数据。
Websocket 是为了解决 HTTP 轮询、长轮询的问题
- 轮询:每隔一定时间发出一个请求,耗资源
- 长轮询:客户端发送一个超长时间的请求,服务器hold住这个请求,直到有新数据时返回
WebSocket & Socket
Socket 本身并不是一个协议。它工作在 OSI 模型会话层(第5层),是为了方便大家直接使用更底层协议(一般是 TCP 或 UDP )而存在的一个抽象层。Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API)。
Socket 可以指定不同的传输协议(TCP 、UDP)
1 | WebSocket 和 Socket 本质没有什么关系。WebSocket 基于 TCP ,Socket 可以基于 TCP、UDP |
WebSocket & HTTP
- HTTP 是基于
请求-应答
的方式,WebSocket是双向通信的 - WebSocket 连接使用的是HTTP协议进行连接的,发送了一个标记了 Upgrade 字段的请求,定义了一系列新的header域,标明是 WebSocket 连接。
- 都是基于TCP的应用层协议。