wdt在通过esp8266向PubNub发送REST API订阅请求时重置

wdt在通过esp8266向PubNub发送REST API订阅请求时重置,rest,pubnub,nodemcu,watchdog,arduino-esp8266,Rest,Pubnub,Nodemcu,Watchdog,Arduino Esp8266,我正在使用代码连接NodeMCU esp8266和PubNub。发布工作正常,但订阅部分工作一段时间,然后导致控制器复位。代码正确地遵循订阅消息时间戳机制。在订阅代码处观察时,在一个循环中执行三个步骤 //1. connecting to pubsub.pubnub.com if (!client.connect(host, 80)) { Serial.println("connection failed"); return; } //2. making and sen

我正在使用代码连接NodeMCU esp8266和PubNub。发布工作正常,但订阅部分工作一段时间,然后导致控制器复位。代码正确地遵循订阅消息时间戳机制。在订阅代码处观察时,在一个循环中执行三个步骤

//1. connecting to pubsub.pubnub.com
if (!client.connect(host, 80))
  {
    Serial.println("connection failed");
    return;
  }

//2. making and sending the GET request to subscribe
  url = "/subscribe/";
  url += subKey;
  url += "/";
  url += channel;
  url += "/0/";
  url += timeToken;
  //Serial.println(url);

  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "Connection: close\r\n\r\n");             
  delay(10);

//3. finally listening the received msg response
  while (client.available())
  {
    String line = client.readStringUntil('\r');
    if (line.endsWith("]"))
    {
      Serial.println(line);
      json_handler(string_parser(line)); // handling the received msg
    }
  }
第一步是使控制器复位(软wdt复位)

我观察到这一点,将第一步(连接到主机)从void loop()放到setup(),我收到的初始GET响应为[[],“1497123776801072”],但在这之后,连接在步骤2中关闭,因此我将不会从订阅的通道接收任何进一步的消息。我在第2步尝试不关闭连接,但它似乎工作正常,但有延迟,有时会收到两次相同的消息。我知道这不是理想的方法。所以我的问题是:我们是否需要不断建立新的连接并发送GET请求来接收来自通道的消息并关闭连接?如果是,是什么导致控制器复位

或者有没有办法发送一次subscribe-GET请求,然后一直等待收到的消息

Soft WDT reset

ctx: cont 
sp: 3ffef920 end: 3ffefcb0 offset: 01b0

>>>stack>>>
3ffefad0:  00000000 3ffefff8 3ffefff8 40204083  
3ffefae0:  402017b8 00000000 3ffefff8 40204083  
3ffefaf0:  00000000 3ffefff8 00000000 40202152  
3ffefb00:  001e8480 3ffe0001 3ffefd38 40202152  
3ffefb10:  00000000 00000040 00000000 00000000