let ws; let messageQueue = []; async function initWebsocket(url) { ws = new WebSocket(url); if (ws !== null) { ws.onopen = async (event) => { console.log("WebSocket connection established"); while (messageQueue.length > 0) { const message = messageQueue.shift(); if (message) { ws.send(message); } } }; ws.onmessage = (event) => { const msgData = event.data; (async () => { if (typeof msgData === "string") { try { const parsedMessage = JSON.parse(msgData); const services = await Services.getInstance(); switch (parsedMessage.flag) { case "Handshake": await services.handleHandshakeMsg(url, parsedMessage.content); break; case "NewTx": await services.parseNewTx(parsedMessage.content); break; case "Cipher": await services.parseCipher(parsedMessage.content); break; case "Commit": await services.handleCommitError(parsedMessage.content); break; } } catch (error) { console.error("Received an invalid message:", error); } } else { console.error("Received a non-string message"); } })(); }; ws.onerror = (event) => { console.error("WebSocket error:", event); }; ws.onclose = (event) => { console.log("WebSocket is closed now."); }; } } function sendMessage(flag, message) { if (ws.readyState === WebSocket.OPEN) { const networkMessage = { flag, content: message }; console.log("Sending message of type:", flag); ws.send(JSON.stringify(networkMessage)); } else { console.error("WebSocket is not open. ReadyState:", ws.readyState); messageQueue.push(message); } } const modalHtml = "
-${value.previous_value}
+${value.new_value}