Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Websocket ESP8266通过webscoket连接客户端(无库,仅AT命令)_Websocket_Esp8266_At Command - Fatal编程技术网

Websocket ESP8266通过webscoket连接客户端(无库,仅AT命令)

Websocket ESP8266通过webscoket连接客户端(无库,仅AT命令),websocket,esp8266,at-command,Websocket,Esp8266,At Command,我正在使用AT命令在客户端进行websocket实现。 我已将其作为基线并阅读。 硬件:ESP8266+arduino uno 代码: String cmd=“AT+CIPSTART=\”TCP\”,\”;cmd+=SERVER\u IP;cmd+=”\”,81”//启动TCP连接。到端口81上的服务器\u IP 如果(!sendCommand(cmd,“OK”,继续)) 返回; 延迟(2000年); 如果(!sendCommand(“AT+CIPSTATUS”,“OK”,CONTINUE))/

我正在使用AT命令在客户端进行websocket实现。
我已将其作为基线并阅读。
硬件:ESP8266+arduino uno

代码:

String cmd=“AT+CIPSTART=\”TCP\”,\”;cmd+=SERVER\u IP;cmd+=”\”,81”//启动TCP连接。到端口81上的服务器\u IP
如果(!sendCommand(cmd,“OK”,继续))
返回;
延迟(2000年);
如果(!sendCommand(“AT+CIPSTATUS”,“OK”,CONTINUE))//检查TCP连接状态。
返回;
cmd=“GET 192.168.43.228:81 HTTP/1.1\r\n”;
cmd+=“主机:192.168.43.228:81\r\n”;
cmd+=“升级:websocket\r\n”;
cmd+=“连接:升级\r\n\r\n”;
如果(!sendCommand(“AT+CIPSEND=“+String(cmd.length()),“>”,继续)){
sendCommand(“AT+CIPCLOSE”,“CONTINUE”);
Serial.println(“连接超时”);
返回;
}
sendCommand(cmd,“确定”,继续);//将数据发送到服务器。
延迟(1000);
readResponseData(“”);
登录arduino端:

ESP8266 Demo
AT+RST

OK
bBֆ@⸮Sc⸮⸮⸮ȤS⸮⸮⸮ɥ⸮⸮⸮⸮H⸮
[System Ready
, Vendo:⸮ݹ⸮⸮⸮ɹcom]
AT+GMR

0018000902

OK

AT+CWMODE?

+CWMODE:1

OK

AT+CWMODE=1

no change

AT+CWMODE=1

no change

AT+CIPMUX=0

OK

AT+CWJAP="AndroidAP","xxxx"

OK
Connected to WiFi.

AT+CWJAP="AndroidAP","xxxxx"

OK

AT+CWSAP=?

no this fun
AT+CIFSR

192.168.43.29

OK
Module is ready.

AT+CIPSTART="TCP","192.168.43.228",81

OK

Linked
AT+CIPSTATUS

STATUS:3
+CIPSTATUS:0,"TCP","192.168.43.228",81,0

OK

AT+CIPSEND=100

>
 GET 192.168.43.228:81 HTTP/1.1
Host: 192.168.43.228:81
Upgradewrong syntax

ERROR

SEND OK


OK
Unlink
WiFi connected
IP address:
192.168.43.228
Server available at ws://192.168.43.228:81
Accepted new web sockets client at index 0
服务器端:

ESP8266 Demo
AT+RST

OK
bBֆ@⸮Sc⸮⸮⸮ȤS⸮⸮⸮ɥ⸮⸮⸮⸮H⸮
[System Ready
, Vendo:⸮ݹ⸮⸮⸮ɹcom]
AT+GMR

0018000902

OK

AT+CWMODE?

+CWMODE:1

OK

AT+CWMODE=1

no change

AT+CWMODE=1

no change

AT+CIPMUX=0

OK

AT+CWJAP="AndroidAP","xxxx"

OK
Connected to WiFi.

AT+CWJAP="AndroidAP","xxxxx"

OK

AT+CWSAP=?

no this fun
AT+CIFSR

192.168.43.29

OK
Module is ready.

AT+CIPSTART="TCP","192.168.43.228",81

OK

Linked
AT+CIPSTATUS

STATUS:3
+CIPSTATUS:0,"TCP","192.168.43.228",81,0

OK

AT+CIPSEND=100

>
 GET 192.168.43.228:81 HTTP/1.1
Host: 192.168.43.228:81
Upgradewrong syntax

ERROR

SEND OK


OK
Unlink
WiFi connected
IP address:
192.168.43.228
Server available at ws://192.168.43.228:81
Accepted new web sockets client at index 0
--

…并且没有其他来自服务器的消息,该服务器应该在接受websocket后立即发送消息

请给我一些见解:)

我找到了一个解决方案

事实上,我并不知道所有的细节

成功握手后,您需要符合帧要求。它不仅仅是原始文本:)

对于有限的用例(即长度),我找到了一个解决方案

事实上,我并不知道所有的细节

成功握手后,您需要符合帧要求。它不仅仅是原始文本:)


对于有限的用例(即,在长度上,
和数据之间的新行和空格是什么?对于第一个“>”:它是ESP8266发回的提示。否则,
仅用于编辑(删除)
和数据之间的新行和空格是多少?对于第一个“>”:它是ESP8266返回的提示。否则
仅用于编辑(已删除)