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