websocket草案00协议

本文详细介绍了WebSocket握手协议的过程,包括客户端发起的握手请求和服务器端的响应,还讲解了加密KEY的生成算法,并概述了消息发送接收及关闭连接的具体方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WebSocket握手协议

1、客户端握手请求
GET /WebSocket/LiveVideo HTTP/1.1\r\n
Upgrade: WebSocket\r\n
Connection: Upgrade\r\n
Host: localhost:8080\r\n
Origin: http://127.0.0.1\r\n
Sec-WebSocket-Key1: 23 asdfJKj,asdjk\r\n
Sec-WebSocket-Key2: dssariuvl,arssdd\r\n
r\n
8个字节Sec_WebSocket-Key3值  (没有键名)

2、服务端握手回复
HTTP/1.1 101 Web Socket Protocol Handshake\r\n
Upgrade: WebSocket\r\n
Connection: Upgrade\r\n
Sec-WebSocket-Origin: http://127.0.0.1\r\n
Sec-WebSocket-Location: ws://localhost:8080/WebSocket/LiveVideo\r\n
r\n
16个字节的加密KEY

加密KEY算法:

Sec_WebSocket-Key1的产生方式:
(1)提取客户端请求的Sec_WebSocket-Key1中的数字字符组成字符串k1
(2)转换字符串k1为8个字节的长整型intKey1
(3)统计客户端请求的Sec_WebSocket-Key1中的空格数k1Spaces
(4)intKey1/k1Spaces取整k1FinalNum
(5)将k1FinalNum转换成字节数组再反转最终形成4个字节的Sec_WebSocket-Key1

Sec_WebSocket-Key2的产生方式:
(1)提取客户端请求的Sec_WebSocket-Key2中的数字字符组成字符串k2
(2)转换字符串k2为8个字节的长整型intKey2
(3)统计客户端请求的Sec_WebSocket-Key2中的空格数k2Spaces
(4)intKey2/k2Spaces取整k2FinalNum
(5)将k2FinalNum转换成字节数组再反转最终形成4个字节的Sec_WebSocket-Key2

Sec_WebSocket-Key3的产生方式:
客户端握手请求的最后8个字节

将Sec_WebSocket-Key1、Sec_WebSocket-Key2、Sec_WebSocket-Key3合并成一个16字节数组
再进行MD5加密形成最终的16个字节的加密KEY

3、消息发送接收
客户端和服务端发送非握手文本消息时,消息以utf-8编码,并以0x00开头,0xFF结尾。

4、关闭连接

客户端发送<<0xFF, 0x00>>,服务器回复<<0xFF, 0x00>>。

转载于:https://www.cnblogs.com/poti/articles/2828392.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值