WebSocket 通信流程,从WebSocket握手操作、WebSockt传输原理和WebSocke端点的4个生命周期事件角度介绍WebSocket的通信流程。
WebSocket握手操作
基于HTTP调用完成握手操作,如下图所示,客户端首先发起一个HTTP请求到服务端,该请求的特殊之处在于在Header里面包括一个upgrade字段,告诉服务端想升级成WebSocket协议。
服务端收到后就会响应一个握手的确认,发送switching表示允许客户端向WebSocket协议转换。
这样,客户端和服务端就可以相互发送消息(message)了。
WebSockt传输原理
- 协议升级后,继续复用HTTP的
底层Socket
完成后续通讯 - Message底层会被切成多个Frame传输
- 编程时只需要操作Message,无需关心Frame
- 框架底层完成TCP网络I/O,WebSocket协议解析,开发者无需关心
WebSocke端点的4个生命周期事件
- 打开事件: 此事件发生在端点建立新连接时并且在任何其他事件发生之前。
- 消息事件: 此事件接收 WebSocket 对话中另一端发送的消息。它可以发生在 WebSocket 端点接收了打开事件之后并且在接收关闭事件关闭连接之前的任意时刻。
- 错误事件: 此事件在 WebSocket 连接或者端点发生错误时产生。
- 关闭事件: 此事件表示 WebSocket 端点的连接目前正在部分地关闭,它可以由参与连接的任意一个端点发出。