ESP32 Websocket JavaScript
你好 我读了很多书,但哪儿也去不了。据我所知,所有的信息都是在onmessage上到达的?!随机数传输速度并将数据发送到客户端。工作到目前为止,但现在我想发送另一个速度信号“Rpm2=randomNumber2”和停止信号。 我想我会在ws.onmessage下使用if()管理数据。但我不知道如何分离数据。我很抱歉我的无知,希望你能帮助我 我应该如何分离数据?我用if()尝试了不同的变体。我是否必须更改globalClient->Text的某些内容 谢谢你,并致以最良好的问候ESP32 Websocket JavaScript,websocket,message,addeventlistener,esp32,Websocket,Message,Addeventlistener,Esp32,你好 我读了很多书,但哪儿也去不了。据我所知,所有的信息都是在onmessage上到达的?!随机数传输速度并将数据发送到客户端。工作到目前为止,但现在我想发送另一个速度信号“Rpm2=randomNumber2”和停止信号。 我想我会在ws.onmessage下使用if()管理数据。但我不知道如何分离数据。我很抱歉我的无知,希望你能帮助我 我应该如何分离数据?我用if()尝试了不同的变体。我是否必须更改globalClient->Text的某些内容 谢谢你,并致以最良好的问候 float rp
float rpm = 123;
float rpm2 = 12;
AsyncWebServer server(80);
AsyncWebsocketClient * globalClient = NULL;
Void onWsEvent(AsyncWebSocket * server, AsyncWebsocketClient * client, AwsEventType type, void * arg, uint8_t *data, size_t len){
if(type == WS_EVT_CONNECT){
globalClient = client;
}
else if(type == WS_EVT_DISCONNECT){
globalClient = NULL;
}
}
Void SendRpm() {
if(globalClient != NULL && globalClient->status() == WS_CONNECTED) {
if(rpm > 10) {
String randomNumber = String(rpm);
globalClient->text(randomNumber);
}
if(rpm2 > 10) {
String randomNumber2 = String(rpm2);
globalClient->text(randomNumber2);
}
}
}
Client side:
var ws = new Websocket(“ws://……./ws”);
ws.onopen = function() {
console.log(“Connected”);
};
ws.onclose = function() {
console.log(“Disconnected”);
};
ws.onopen = function() {
console.log(“Connected”);
};
ws.addEventListener(“message“, function (evt) {
console.log(“Received: “ + evt.data);
if(typeof (evt.data) !== “randomNumber“) { document.getElementById(“rpm1value”).value = evt.data;
}
if(typeof (evt.data) !== “randomNumber2“) { document.getElementById(“rpm2value”).value = evt.data;
}
}); ` ```
可以关闭。我换成了Arduinojson。无论如何,谢谢你,祝你一切顺利。
我的解决方案:
float m1rpm = 123;
float m2rpm = 12;
AsyncWebServer server(80);
AsyncWebSocket ws(“/ws”);
AsyncWebsocketClient * globalClient = NULL;
Void onWsEvent(AsyncWebSocket * server, AsyncWebsocketClient * client, AwsEventType type, void * arg, uint8_t *data, size_t len){
if(type == WS_EVT_CONNECT){
globalClient = client;
}
else if(type == WS_EVT_DISCONNECT){
globalClient = NULL;
}
}
Void SendRpm() {
StaticJsonDocument<200> json;
json[“rpmstatus”] = m1rpm;
json[“rpmstatus2”] = m2rpm;
char buffer[100];
serializeJson(json, buffer);
if(globalClient != NULL && globalClient->status() == WS_CONNECTED) {
globalClient->text(buffer);
}
}
Client side: js
var ws = new Websocket(“ws://……./ws”);
ws.onopen = function() {
console.log(“Connected”);
};
ws.onclose = function() {
console.log(“Disconnected”);
};
ws.onopen = function() {
console.log(“Connected”);
};
ws.addEventListener(“message“, function (evt) {
buffer = JSON.parse(evt.data);
document.getElementById(“rpm1”).value = buffer.rpmstatus;
document.getElementById(“rpm2”).value = buffer.rpmstatus2;
});
HTML:
<progress id=“rpm1” max=“500” value=“0”></progress>
<progress id=“rpm2” max=“500” value=“0”></progress> ```
float m1rpm=123;
浮动m2rpm=12;
异步web服务器(80);
异步WebSocket ws(“/ws”);
AsyncWebsocketClient*globalClient=NULL;
Void onWsEvent(AsyncWebSocket*服务器、AsyncWebsocketClient*客户端、AwsEventType类型、Void*参数、uint8_t*数据、大小长度){
如果(类型==WS\u EVT\u CONNECT){
globalClient=客户机;
}
else if(类型==WS_EVT_断开){
globalClient=NULL;
}
}
Void sendpm(){
静态json文档json;
json[“rpmstatus”]=m1rpm;
json[“rpmstatus2”]=m2rpm;
字符缓冲区[100];
序列化json(json,缓冲区);
if(globalClient!=NULL&&globalClient->status()==WS\u CONNECTED){
全局客户端->文本(缓冲区);
}
}
客户端:js
var ws=新的Websocket(“ws://……./ws”);
ws.onopen=函数(){
控制台日志(“已连接”);
};
ws.onclose=function(){
控制台日志(“断开”);
};
ws.onopen=函数(){
控制台日志(“已连接”);
};
ws.addEventListener(“消息”,函数(evt){
buffer=JSON.parse(evt.data);
document.getElementById(“rpm1”).value=buffer.rpmstatus;
document.getElementById(“rpm2”).value=buffer.rpmstatus2;
});
HTML:
```