Исходные данные: на основном контроллере (STM32) работает основная логика. Есть необходимость передачи данных с контроллера на сервер через вебсокет. Для этой цели взяли обычную ESP-01. Подключиться к вебсокету я смог двумя запросами:
AT+CIPSTART="TCP","192.168.100.5",5000
AT+CIPSEND=119
GET /socket.io/ HTTP/1.1
Origin: 192.168.100.20
Connection: Upgrade
Host: 192.168.100.5:5000
Upgrade: websocket
После этого запроса сервер отвечает и передает sid
+IPD,427:HTTP/1.1 200 OK
Set-Cookie: io=05ff7d0da3444cc3a099929011cfc599; path=/; SameSite=Lax
Content-Type: application/octet-stream
Access-Control-Allow-Origin: 192.168.100.20
Access-Control-Allow-Credentials: true
Content-Length: 154
Date: Mon, 23 Nov 2020 12:45:54 GMT
Затем выполняется тот же запрос, но уже с подставленными параметрами
AT+CIPSEND=176
GET /socket.io/?transport=websocket&sid=05ff7d0da3444cc3a099929011cfc599 HTTP/1.1
Origin: 192.168.100.20
Connection: Upgrade
Host: 192.168.100.5:5000
Upgrade: websocket
После чего сервер отвечает:
+IPD,234:HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
WebSocket-Origin: 192.168.100.20
WebSocket-Location: ws://192.168.100.5:5000/socket.io/?transport=websocket&sid=05ff7d0da3444cc3a099929011cfc599
С вебом я знаком слабо, но, насколько я понял из описания вебсокета, после "рукопожатия" вебсокет готов принимать данные, но при попытке отправить через AT+CIPSEND "Hello world", сервер выдает ошибку, так как пытается прочитать Hello как запрос.
Отсюда вопрос: возможно у кого-то был опыт реализации подобной схемы, каким образом необходимо передавать данные на вебсокет с помощью AT-команд?
AT+CIPSTART="TCP","192.168.100.5",5000
AT+CIPSEND=119
GET /socket.io/ HTTP/1.1
Origin: 192.168.100.20
Connection: Upgrade
Host: 192.168.100.5:5000
Upgrade: websocket
После этого запроса сервер отвечает и передает sid
+IPD,427:HTTP/1.1 200 OK
Set-Cookie: io=05ff7d0da3444cc3a099929011cfc599; path=/; SameSite=Lax
Content-Type: application/octet-stream
Access-Control-Allow-Origin: 192.168.100.20
Access-Control-Allow-Credentials: true
Content-Length: 154
Date: Mon, 23 Nov 2020 12:45:54 GMT
Затем выполняется тот же запрос, но уже с подставленными параметрами
AT+CIPSEND=176
GET /socket.io/?transport=websocket&sid=05ff7d0da3444cc3a099929011cfc599 HTTP/1.1
Origin: 192.168.100.20
Connection: Upgrade
Host: 192.168.100.5:5000
Upgrade: websocket
После чего сервер отвечает:
+IPD,234:HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
WebSocket-Origin: 192.168.100.20
WebSocket-Location: ws://192.168.100.5:5000/socket.io/?transport=websocket&sid=05ff7d0da3444cc3a099929011cfc599
С вебом я знаком слабо, но, насколько я понял из описания вебсокета, после "рукопожатия" вебсокет готов принимать данные, но при попытке отправить через AT+CIPSEND "Hello world", сервер выдает ошибку, так как пытается прочитать Hello как запрос.
Отсюда вопрос: возможно у кого-то был опыт реализации подобной схемы, каким образом необходимо передавать данные на вебсокет с помощью AT-команд?