如何在 javascript 中将平面文本数据从一个本地 ip 检索到另一个?

How can I retrieve plane text data from one local ip to another in javascript?

我正在使用 ESP32 Wifi 模块作为主机来托管一个网页,该网页显示 table 中许多二进制数据点的值,如 OKFAILED。我需要让这个设备从本地 IP 上的另一个 ESP32 客户端检索数据,即 192.168.138.50/readVal1 这个地址将只显示平面文本 OKFAILED。我想获取此值并将其显示在我的主模块生成的 table 中。我应该怎么做?

我尝试在 Arduino 代码中使用 HTTP get 请求,如下所示。

void runTest6(){
    String payload;
    HTTPClient http;
    http.begin("192.168.137.50/readBatt1");

    int httpCode = http.GET();
    if(httpCode > 0) {
        payload = http.getString();
        Serial.println(payload);
    }else{
        Serial.println("HTTP request error");
    }
    http.end();
    String batt6val = payload;
    server.send(200, "text/plane", batt6val);
}

这是我的 Javascript 在处理更新的根上\

function getData(){
    try{
        console.log("Getting Data...");
        for(var i = 1;i<=NUMOFUNITS;i++){
            (function (i){
                setTimeout(function () {
                    console.log("(debug msg)in loop #: " + i)
                        var xhttp = new XMLHttpRequest();
                        var current = "batt" + i + "val";
                        var dataRead = "readBatt" + i;
                        xhttp.onreadystatechange = function(){
                            if (this.readyState == 4 && this.status == 200){
                                console.log("updating innerHTML for data value: " + i);
                                document.getElementById(current).innerHTML = this.responseText;
                            }else if(this.readyState == 4 && this.status == 404){
                                console.log("no battery @ " + i);
                                document.getElementById(current).innerHTML = "None found";
                            }
                        };
                        xhttp.open("GET", dataRead, true);
                        xhttp.send();
                        if(i == 1){
                            updateTime();
                        console.log("Updated times.")
                        }   
                    }, 400*i);
                })(i);
            };
            console.log("Data update complete.");
        }
        catch(err){
            alert(err.name);
            throw err;
            getData(); //try to get data again 
        }
        finally{
            console.log("DONE");
        }
    }

使用 HTTP 服务器,我可以在 ESP32 之间发送信息。使用我设置的 WebServer server.on("/status/{}", sendData);其中 {} 包含 pathArg,也就是代表请求哪些数据的数字。函数 senData() 采用 pathArg 并发送适当的数据,如下所示。

void sendData(){
    String battString = server.pathArg(0);
    Serial.println("Sending Data... PathArg= " + battString);
    int battNum = battString.toInt();
    int arrayNum = battNum - 1;
    server.send(200, "text/plane", battStatus[arrayNum]);
}

这里有一个名为 battStatus 的数组保存每个的状态。