面试题答案
一键面试- 客户端发起请求:
- 客户端通过HTTP协议发起一个特殊的HTTP请求,请求的URL指向WebSocket服务端地址。
- 关键HTTP请求头信息:
Upgrade: websocket
:表示客户端希望将当前的HTTP连接升级为WebSocket连接。Connection: Upgrade
:配合Upgrade
头,表明客户端想要进行连接升级。Sec - WebSocket - Key
:由客户端随机生成的Base64编码的16字节值,用于安全握手。Sec - WebSocket - Version
:指定客户端支持的WebSocket协议版本,常见的如13
。
- 服务端响应:
- 服务端收到请求后,如果支持WebSocket协议,会返回一个HTTP响应。
- 关键HTTP响应头信息:
Upgrade: websocket
:表明服务端同意将连接升级为WebSocket连接。Connection: Upgrade
:同样表明连接升级。Sec - WebSocket - Accept
:服务端将客户端发送的Sec - WebSocket - Key
与一个固定字符串258EAFA5 - E914 - 47DA - 95CA - C5AB0DC85B11
拼接,然后进行SHA - 1哈希计算,再进行Base64编码,得到的值作为Sec - WebSocket - Accept
头的值返回给客户端。
- 握手机制:
- 客户端收到服务端的响应后,会验证
Sec - WebSocket - Accept
头的值。如果验证通过,客户端和服务端之间的WebSocket连接就建立成功了。此时,连接从HTTP协议转换为WebSocket协议,后续双方就可以通过WebSocket协议进行双向通信,不再使用HTTP协议的请求 - 响应模式。
- 客户端收到服务端的响应后,会验证