外贸网站推广教程,wordpress整站数据,长沙做网站建设的,网站收录 作用webSocket三次握手
**1.客户端发送WebSocket握手请求#xff1a;**当客户端想要建立WebSocket连接时#xff0c;他会发送一个HTTP请求到服务器#xff0c;HTTP协议版本不能低于1.1#xff0c;GET请求到服务器#xff0c;这个请求通常称为握手请求#xff0c;其中包含一些…webSocket三次握手
**1.客户端发送WebSocket握手请求**当客户端想要建立WebSocket连接时他会发送一个HTTP请求到服务器HTTP协议版本不能低于1.1GET请求到服务器这个请求通常称为握手请求其中包含一些特定的头信息表示客户端希望升级到WebSocket协议
GET / HTTP/1.1
Upgrade: websocket
Connection:Upgrade
Host: example.com
Origin: [http://example.com
Sec-WebSocket-Key: sN9cRrP/n9NdMgdcy2VJFQ
Sec-WebSocket-Version:13
**2.服务器响应握手请求**服务器接收客户端的握手请求后会进行一些协议验证验证后会向客户端发送一个HTTP响应响应中包含了一些头部信息其中比较重要的是
验证协议和请求方法
WebSocket协议是基于HTTP1.1的并且WebSocket协议规定了在初始握手阶段客户端向服务器发送的请求方法必须是GET
检查头信息
检查请求头的Upgrade和Connection
生成Sec-WebSocket-key
服务器收到客户端传来的Sec-webSocket-key之后将其与固定的UID进行拼接经过sha-1摘要计算和Base64编码生成新的Base64编码值作为响应头的sec-websocket-accept字段
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection:Upgrade
Sec-WebSocket-Accept: fFBooB7FAkLlXgRSz0BT3v4hq5s
Sec-WebSocket-Location: ws://example.com/
返回握手响应报文他会返回HTTP响应状态码为101表示服务器理解客户端请求需要客户端采取不同的协议来完成请求
3.客户端验证握手响应
检查状态码
客户端接收服务器的握手响应后首先检查响应状态码是否为101
检查响应头信息
如upgrade和connection以确保服务器升级到了websocket协议并建立持久链接
验证sec-websocket-accept头信息
客户端接收到服务器的握手响应后将获取到的Sec-WebSocket-Accept与自己的Sec-Websocket-Key进行验证如果两者相等则验证通过发送确认握手成功报文否则验证失败
4.确认握手并建立WebSocket连接
确认握手成功客户端将连接从HTTP协议升级成webSocket协议客户端和服务器之间的通信将采用webSocket协议进行双向实时数据传输
需要注意的是WebSocket握手成功并升级协议后后续的数据传输将不再遵循HTTP的请求-响应模型而是使用WebSocket协议的帧结构进行数据交换