This commit is contained in:
Dmitry Borisenko
2021-12-10 16:07:09 +01:00
parent f20e96d007
commit eaa1d613ca

View File

@@ -131,8 +131,15 @@
let socketConnected = false;
let selectedDeviceData;
let deviceList = [];
let flag = true;
deviceList = [
{
name: "Устройство 1",
id: "987654321",
ip: "192.168.88.230",
status: false,
},
{
name: "Устройство 2",
id: "987654321",
@@ -148,7 +155,7 @@
function connectToAllDevices() {
let ws = 0;
deviceList.forEach((device) => {
if (debug) console.log("[i] list", device.name, ws, device.ip, device.id);
//if (debug) console.log("[i]", device.name, ws, device.ip, device.id);
device.ws = ws;
wsConnect(ws);
wsEventAdd(ws);
@@ -163,9 +170,9 @@
device.status = status;
if (debug) {
if (device.status) {
console.log("[i]", device.name, device.ip, "dev status online");
console.log("[i]", device.ip, "status online:");
} else {
console.log("[i]", device.name, device.ip, "dev status offline");
console.log("[i]", device.ip, "status offline:");
}
}
}
@@ -173,12 +180,23 @@
deviceList = deviceList;
}
function getDeviceStatus(ws) {
let ret = false;
deviceList.forEach((device) => {
if (ws === device.ws) {
ret = device.status;
}
});
return ret;
}
function wsConnect(ws) {
let ip = getIP(ws);
if (ip === "error") {
if (debug) console.log("[e]", "device list wrong");
} else {
socket[ws] = new WebSocket("ws://" + ip + "/ws");
if (debug) console.log("[i]", ip, "started connecting");
}
}
@@ -195,7 +213,7 @@
function wsEventAdd(ws) {
if (socket[ws]) {
socket[ws].addEventListener("open", function (event) {
if (debug) console.log("[i]", "ws connected", getIP(ws));
if (debug) console.log("[i]", getIP(ws), "completed connecting");
markDeviceStatus(ws, true);
//socket[ws].send("HELLO");
});
@@ -208,12 +226,12 @@
}
});
socket[ws].addEventListener("close", (event) => {
if (debug) console.log("[e]", "ws close", getIP(ws));
if (debug) console.log("[e]", getIP(ws), "connection closed");
markDeviceStatus(ws, false);
wsConnect(ws);
});
socket[ws].addEventListener("error", function (event) {
if (debug) console.log("[e]", "ws error", getIP(ws));
if (debug) console.log("[e]", getIP(ws), "connection error");
markDeviceStatus(ws, false);
wsConnect(ws);
});
@@ -230,17 +248,25 @@
function wsTestMsgTask() {
setTimeout(wsTestMsgTask, 10000);
deviceList.forEach((device) => {
wsSendMsg(device.ws, "test");
});
if (!flag) {
deviceList.forEach((device) => {
if (!getDeviceStatus(device.ws)) {
wsConnect(device.ws);
wsEventAdd(device.ws);
} else {
wsSendMsg(device.ws, "");
}
});
}
flag = false;
}
function wsSendMsg(ws, msg) {
if (socket[ws] && socket[ws].readyState === 1) {
socket[ws].send(msg);
if (debug) console.log("[i]", ws, "msg send success:", msg);
if (debug) console.log("[i]", getIP(ws), "msg send success", msg);
} else {
if (debug) console.log("[e]", ws, "msg not send", msg);
if (debug) console.log("[e]", getIP(ws), "msg not send", msg);
}
}