421
社区成员
发帖
与我相关
我的任务
分享
百度百科定义:
WebSocket 是
独立的
、创建在TCP
上的协议。
Websocket 通过HTTP/1.1 协议
的101
状态码进行握手。
为了创建Websocket连接,需要通过浏览器发出请求,之后服务器进行回应,这个过程通常称为“握手”(handshaking)
。
通过上面的定义,我们可以得出一个结论:
WebSocket = “HTTP第1次握手” + 基于TCP协议的
“全双工“
通讯的网络协议
建立WebSocket连接的过程如下:
全双工
通讯 (通过心跳机制保持连接)最终,使得“服务端”拥有主动发信息给“客户端”的能力。
最常见的场景之一肯定是: IM即时通讯 。 像:QQ、微信等, 当然仅仅依靠WebSocket肯定不够,各大厂都有自己相应的优化方案
此外还有像 联机游戏、股票/基金等金融交易平台的实时数据刷新、还有协同办公等等
Websocket是应用层第七层上的一个应用层协议
,它必须依赖 HTTP 协议进行一次握手 ,握手成功后,数据就直接从 TCP 通道传输,与 HTTP 无关了。即:websocket分为握手
和数据传输
二个阶段,即进行了HTTP握手 + 双工的TCP连接。
客户端发送消息:
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Origin: http://example.com
Sec-WebSocket-Version: 13
服务端返回消息:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
这里值得注意的是Sec-WebSocket-Accept
的计算方法:
base64(hsa1(sec-websocket-key + 258EAFA5-E914-47DA-95CA-C5AB0DC85B11))
Sec-WebSocket-Accept dismatch
onopen
事件更多内容请跳转至 https://blog.csdn.net/zhanglei5415/article/details/129881999 阅读