nicer boxes

This commit is contained in:
JurajKubrican
2025-08-04 19:39:13 +02:00
parent c57b4504e5
commit 70b0b70f65
7 changed files with 125 additions and 59 deletions

View File

@@ -1,7 +1,34 @@
"use strict";
const getSocket = (url) => {
let ws = new WebSocket(url);
ws.onclose = () => setTimeout(() => (ws = getSocket(url)), 100);
ws.onerror = () => ws.close();
return ws;
const sockets = {};
const isSocketOpen = (url) => {
return sockets[url]?._ws?.readyState === WebSocket.OPEN;
};
const initSocket = (url) => {
if (sockets[url]) {
if (isSocketOpen(url)) {
return sockets[url];
}
else {
sockets[url]._ws.close();
}
}
const ws = new WebSocket(url);
const socket = {
send: (data) => {
sockets[url]._ws.send(data);
},
addMessageListener: (listener) => {
socket._listeners.push(listener);
},
_listeners: sockets[url]?._listeners ?? [],
_ws: ws,
};
ws.onerror = () => ws.close();
ws.onclose = () => initSocket(url);
ws.onmessage = (event) => {
console;
sockets[url]._listeners.forEach((listener) => listener(event.data));
};
sockets[url] = socket;
return sockets[url];
};