diff --git a/src/App.svelte b/src/App.svelte index c536e18..09e492b 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -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); } }