本页协议说明(点开阅读)

WebSocket

干什么用的

★★★ HTTP 的方向是不对称的:只能客户端问、服务器答。服务器想主动推一条消息给浏览器,它没有办法。

★★★ WebSocket 就是来补这一件事的:借一个 HTTP 请求握手,拿到 101 之后把这条 TCP 连接改造成一根双向管子 —— 两头谁都可以随时发。

★★★ 它和 HTTP 是什么关系

★★★★ 只在握手那一下是 HTTP,之后一个 HTTP 字节都没有了。

· 借 HTTP 握手是为了过得去:复用 80/443、过防火墙和代理;
· 101 之后帧格式完全是自己的,头只剩 2~14 字节;
· 所以它不是 HTTP 的第四代 —— HTTP/1.1、2、3 都还是「请求→响应」,它不是。

★★ 帧图上外面那摞灰格和 HTTP/2 一样,但里面那几格完全换了。

★ 常见误解

★★★ 「WebSocket 是 HTTP 的一种」 —— 只有握手那一个包是。之后连帧格式都不一样。

★★★ 「有了 WebSocket 就该全都用它」 —— 它没有缓存、没有状态码、不能被 CDN 加速。普通取数据还是该用 HTTP。

★★ 「ws:// 就够了」 —— 明文 ws:// 常被代理掐断,生产上一律用 wss://(也就是套在 TLS 里)。

冀ICP备2026021556号-2|冀公网安备13068302000206号