我正在尝试发布设置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();
}