STM32+ESP8266 AT指令模拟建立websocket服务器和客户端
1.在建立TCP连接后,客户端需要发送握手升级通信,客户端发送再服务端回复后判断 Sec-WebSocket-Accept是否正确 就可以确认链接1.单片机 先生成一个16字节的随机码,通过base64编码生成24字节的Sec-WebSocket-Key2.发送到服务端,服务端会回复Sec-WebSocket-Accept。
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格式,还需添加。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)