var client_id = Date.now(); var protocol = window.location.protocol == "https:" ? "wss" : "ws"; var ws; async function getServerStatus() { let elem = document.querySelector("#serverStatus"); elem.innerHTML = "Pending"; // https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch let url = "/alive"; let response = await fetch(url, { method: "GET", headers: { "Content-Type": "application/json", } }); if (response.status != 200) { elem.innerHTML = "Offline"; return; } elem.innerHTML = "Online"; let data = await response.json(); return data; } async function postAdvice() { let topic = document.querySelector("#adviceTopic").value; let elem = document.querySelector("#advice"); let url = "/advice"; let response = await fetch(url, { method: "POST", headers: { "Content-type": "application/json" }, body: JSON.stringify({"topic": topic}) }); if (response.status == 404) { elem.innerHTML = await response.text(); return; } let data = await response.json(); elem.innerHTML = data.slips[0].advice } function connectSocket() { ws = new WebSocket(`${protocol}://${window.location.host}/ws/${client_id}`); ws.onopen = (event) => { console.log(`Websocket opened -> ${client_id}`); } ws.onclose = (event) => { console.log("Websocket closed."); setTimeout(connectSocket, 10000); } ws.onerror = (event) => { console.log("Websocket error."); } ws.onmessage = (event) => { console.log("New Message:"); json_data = JSON.parse(event.data); console.log(json_data); let elem = document.querySelector("#socketMessages"); let br = document.createElement("br"); elem.appendChild(br); elem.innerHTML += event.data; } } function sendMessage(message) { ws.send(message); } function sendSocketMessage() { sendMessage(document.querySelector("#sendSocketMessage").value); } async function onLoad() { await getServerStatus(); connectSocket(); setInterval(async () => { let alive = await getServerStatus(); }, 30000); } onLoad();