86 lines
2.2 KiB
JavaScript
86 lines
2.2 KiB
JavaScript
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(); |