WebSocket概念原理及使用注意事项 - 实践
1. 概念与原理
什么是 WebSocket?
WebSocket 是一种在单个 TCP 连接上进行全双工通信的网络协议。它使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。
关键特性:
全双工通信:客户端和服务器可以同时发送和接收数据,就像打电话一样。
建立在 TCP 之上:WebSocket 本身是一个应用层协议,依赖于底层的 TCP 连接。
低开销:在建立连接后,数据传输的头信息很小,通常只有 2-10 字节,远小于 HTTP 请求的头部。
实时性:服务器可以主动、即时地向客户端推送消息,无需客户端轮询。
与 HTTP 的关系与区别
联系:WebSocket 连接通常通过一个 HTTP 升级请求 来建立。客户端发送一个特殊的 HTTP 请求,告诉服务器希望将协议升级为 WebSocket。
区别:
特性 HTTP WebSocket 通信模式 半双工(请求-响应) 全双工 连接生命周期 短连接(通常) 长连接 数据推送 只能由客户端发起(轮询) 服务端可主动推送 头部开销 每次请求/响应都包含完整头部 连接建立后,头部极小
工作原理:握手与数据传输
握手阶段
客户端发送一个 HTTP 请求,头信息中包含:
text
GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== // 随机生成的密钥 Sec-WebSocket-Version: 13服务器返回一个 HTTP 101 状态码(切换协议)的响应:
text
HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+
浙公网安备 33010602011771号