Arduino Web套接字自动重新连接

时间:2018-11-01 16:12:45

标签: websocket arduino esp8266

我正在使用2 esp8266,都连接到同一网络。 Esp1使用websocket向esp2发送一些数据。所以基本上esp2连接到esp1 websocket并读取数据。 我的问题是,如果重新启动esp1,则再次启动后,esp2不再与之连接,需要重新启动才能连接 这是我在esp2上使用的代码

#include <ESP8266WiFi.h>
#include <WebSocketsClient.h>
#include <ESP8266WebServer.h>
#include <SoftwareSerial.h>

#define USE_SERIAL Serial
#define LEDS 0 //Status led

WebSocketsClient webSocket;
SoftwareSerial COM(5, 4); 

long previousMillis = 0;
long interval = 50;

String data;

void webSocketEvent(WStype_t type, uint8_t * payload, size_t length) {
    switch(type) {
        case WStype_DISCONNECTED:
            yield();
            break;
        case WStype_CONNECTED: {
            webSocket.sendTXT("Connected");
        }
   yield();
            break;
        case WStype_TEXT:
      if(payload[0] == '#') {
        uint32_t dataz = (uint32_t) strtol((const char *) &payload[1], NULL, 10);
        if (dataz < 99911) {
          data = "0" + String(dataz);
        }
        else {
          data = String(dataz);
        }
      }
      yield();
if (data.length() == 6 ) {
COM.print('<'); // start marker
COM.print(data);
COM.println('>'); // end marker
}
       break;
    }

}

void setup() {
  pinMode(LEDS, OUTPUT);
  digitalWrite(LEDS, LOW);
    for(uint8_t t = 4; t > 0; t--) {
        delay(1000);
    }

 WiFi.mode(WIFI_STA);
 WiFi.begin("xxx", "xxx");
 while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
  }
    // server address, port and URL
    webSocket.begin("192.168.0.30", 81, "/");

    // event handler
    webSocket.onEvent(webSocketEvent);

    // use HTTP Basic Authorization this is optional remove if not needed
    //webSocket.setAuthorization("user", "Password");

    // try ever 5000 again if connection has failed
    webSocket.setReconnectInterval(5000);
  digitalWrite(LEDS, HIGH);
}

void loop() {
  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis > interval) {
        previousMillis = currentMillis;

    webSocket.loop();
  }
}

当esp1在断开连接后再次可用时,我需要一些帮助使其重新连接 非常感谢

1 个答案:

答案 0 :(得分:0)

webSocket.loop();应该在if语句之外。