ESP8266WebServer如果传入的POST有效载荷大于1024字节,响应时间将从0.03跳到1秒

时间:2018-03-11 16:42:33

标签: arduino esp8266 arduino-esp8266

我正在尝试发布设置LED颜色值的说明,而且我已经碰壁了。我正在从我的PC发布一个JSON数组,然后使用该数组在我的NodeMCU上相应地设置LED。我正在使用侦听器来处理传入的数据server.on("/command", commandHandler);

我发布,接收,解析和迭代JSON数组的响应时间通常为0.03秒。但是,如果我向我的NodeMCU发送超过1024字节的POST,响应时间总是1秒,无论我发布的是1025字节还是更多。

我可以发送多个< 1024字节的有效负载,但是由于1个字节,从0.03s到1s的巨大跳跃让我想知道是否有某种设置可以用来克服这个问题?

以下是时代的样子:

  

发送256个字节执行0.02秒。

     

发送512字节执行0.02秒。

     

发送768字节执行0.02秒。

     

发送1024个字节执行0.02秒。

     

发送1280字节执行1.00秒。

     

发送1536字节执行0.99秒。

     

发送1792字节执行1.00秒。

     

发送2048字节执行1.00秒。

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ArduinoJson.h>

ESP8266WebServer server(80);

void setup() {

  // Initialization 
  Serial.begin(115200);
  WiFi.begin("ssid", "pass");

  while (WiFi.status() != WL_CONNECTED) delay(500);

  // Listeners
  server.on("/command", commandHandler);
  server.begin();

}


// POST request to set
void commandHandler() {

  DynamicJsonBuffer JSONBuffer;
  JsonObject& json = JSONBuffer.parseObject(server.arg("plain"));

  if (!json.success()) {
    server.send(200, "text/json", "{\"status\":\"Invalid JSON\"}");
    return;
  }

  // LEDs
  if(json["leds"]) {
    // .. do stuff with leds
  }

  server.send(200, "text/json", "{\"status\":\"Done\"}"); 
}

// Main loop
void loop() {
  server.handleClient();
}

0 个答案:

没有答案