WebSocket是一种双向全双工的应用层协议,通常用在要求低延迟或需要服务器主动发送请求的地方。WSS与WS就像HTTPS与HTTP的关系一样,多了TLS加密层。

1
var ws = new WebSocket("wss://xxx.com/func");

首次建立WS连接时会通过HTTP协议握手协商:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
GET /func HTTP/1.1
Host: xxx.com
...
Connection: keep-alive, Upgrade
Upgrade: websocket
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: QKVMhgEVGz7jTFD5PIizrQ==


HTTP/1.1 101 Switching Protocol
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Accept: GUgfO45/U2Oo5uUkpUR3jnm3zcA=
Content-Length: 0


ConnectionUpgrade表明这是WS握手,Sec-WebSocket-Version表示客户端希望使用的版本,Sec-WebSocket-Key为随机产生的Base64编码,Sec-WebSocket-Accept会响应该随机值的哈希。

握手成功后便可基于WS协议传输任意格式的数据,常用JSON:ws.send({"a": 1});