1.客户端

        1.在建立TCP连接后,客户端需要发送握手升级通信,客户端发送

   GET / HTTP/1.1
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

再服务端回复后

HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
 

判断 Sec-WebSocket-Accept是否正确 就可以确认链接

    1.单片机 先生成一个16字节的随机码,通过base64编码生成24字节的  Sec-WebSocket-Key

    2.发送到服务端,服务端会回复Sec-WebSocket-Accept

    3.验证 单片机对Sec-WebSocket-Key拼接固定字符258EAFA5-E914-47DA-95CA-C5AB0DC85B11,SHA1哈希值计算 然后BASE64编码得到28字节的KEY,与服务器发来的Sec-WebSocket-Accept对比 相同即是认为连接。

2服务端

        1.接收客户端发来的握手协议,剥离出Sec-WebSocket-Key,拼接固定字符258EAFA5-E914-47DA-95CA-C5AB0DC85B11,SHA1哈希值计算,BASE64编码得到28字节的key 

         2.拼接成

HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

回复给客户端

3帧格式

发送和接收都要按照帧格式,客户端发送需要添加掩码,服务器回复不需要掩码,发送字节数在125上下时是有区别的,websocket如果使用JSON格式,还需添加。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐