diff --git a/src/App.svelte b/src/App.svelte
index 159af26..a2ac63b 100644
--- a/src/App.svelte
+++ b/src/App.svelte
@@ -1,9 +1,6 @@
@@ -136,60 +133,62 @@
let socket = [];
let socketConnected = false;
let pages = [];
- let messages = [];
+ let coreMessages = [];
let LOG_MAX_MESSAGES = 10;
//секция функций=========================================================================
function wsConnect() {
socket[0] = new WebSocket("ws://" + myip + "/ws");
+ }
+
+ function wsEventAdd() {
socket[0].addEventListener("open", function (event) {
console.log("WS CONNECTED! " + myip);
socketConnected = true;
- socket[0].send("HELLO");
+ //socket[0].send("HELLO");
});
socket[0].addEventListener("message", function (event) {
- console.log("NEW data packet " + myip, event.data);
- onMessage("test", event.data);
+ let data = event.data.toString();
+ //console.log("NEW data packet " + myip, event.data);
+ if (data.includes("/core/")) {
+ data = data.replace("/core/", "");
+ addCoreMsg(data);
+ }
});
socket[0].addEventListener("close", (event) => {
socketConnected = false;
+ wsConnect();
console.log("ws close " + myip);
});
socket[0].addEventListener("error", function (event) {
socketConnected = false;
- console.log(myip + " WebSocket error: ", event);
+ wsConnect();
+ console.log(myip + " ws error: ", event);
});
}
- // Make the function wait until the connection is made...
- //function waitForSocketConnection(socket, callback) {
- // setTimeout(function () {
- // if (socket.readyState === 1) {
- // console.log("Connection is made");
- // if (callback != null) {
- // callback();
- // }
- // } else {
- // console.log("wait for connection...");
- // waitForSocketConnection(socket, callback);
- // }
- // }, 5); // wait 5 milisecond for the connection...
- //}
-
- var reconnectTimer;
- function tryReconnect() {
- reconnectTimer = setInterval(reconnect, 3000);
+ function WSpushLocal(ws, topic, value) {
+ //console.log(ws, topic, value);
+ //wsSendMsg(topic);
+ //if (socketConnected) {
+ // socket[ws].send('{"path":"' + topic + '/control", "status":"' + value.toString() + '"}');
+ //}
}
- function reconnect() {
- if (socket[0].readyState == 1) {
- console.log("web socket connected");
- } else {
- console.log("Try reconnect to web socket");
- wsConnect();
+
+ function wsSendMsg(msg) {
+ if (!socket[0]) return;
+ if (socket[0].readyState === 1) {
+ socket[0].send(msg);
}
}
- function myStopFunction() {
- clearInterval(reconnectTimer);
+
+ function wsTestMsgTask() {
+ setTimeout(wsTestMsgTask, 10000);
+ if (!socket[0]) return;
+ if (socket[0].readyState === 1) {
+ console.log("test");
+ socket[0].send("test");
+ }
}
const syntaxHighlight = (json) => {
@@ -205,9 +204,6 @@
return json;
};
- //находит в массиве с виджетами wigets все уникальные названия страниц и сортирует названия по алфавиту
- //На выходе получаем массив с названиями страниц - pages
- //[{page:"страница1"},{page:"страница2"},]
function findNewPage() {
pages = [];
const newPage = Array.from(new Set(Array.from(wigets, ({ page }) => page)));
@@ -228,8 +224,9 @@
onMount(async () => {
console.log("mounted");
wsConnect();
+ wsEventAdd();
+ wsTestMsgTask();
findNewPage();
- tryReconnect();
});
function wigetsUpdate() {
@@ -237,20 +234,13 @@
findNewPage();
}
- const onMessage = (topic, message) => {
- const msg = message.toString();
- const time = new Date().getTime();
- addMessage(topic, msg, time);
- // client.end();
- };
-
- const addMessage = (topic, msg, time) => {
- if (messages.length > Number(LOG_MAX_MESSAGES)) {
- messages = messages.slice(0);
+ const addCoreMsg = (msg) => {
+ if (coreMessages.length > Number(LOG_MAX_MESSAGES)) {
+ coreMessages = coreMessages.slice(0);
}
- messages = [...messages, { topic, msg, time, colored: syntaxHighlight(msg), closed: true }];
- messages.sort(function (a, b) {
- a.closed = true;
+ const time = new Date().getTime();
+ coreMessages = [...coreMessages, { time, msg }];
+ coreMessages.sort(function (a, b) {
if (a.time > b.time) {
return -1;
}
@@ -337,13 +327,11 @@
-
-
- {#each messages as message, i}
- {message.msg}
- {/each}
-
-
+
+ {#each coreMessages as message, i}
+ {message.msg}
+ {/each}
+