68 lines
1.5 KiB
JavaScript
68 lines
1.5 KiB
JavaScript
let ws;
|
|
|
|
const JS_MESSAGE = "JS code";
|
|
const IN_MESSAGE = "Incoming";
|
|
|
|
/**
|
|
* Log message
|
|
*/
|
|
function log(src, txt) {
|
|
const target = document.getElementById("ws_log");
|
|
const msg = document.createElement("div");
|
|
msg.className = "message";
|
|
msg.innerHTML = `<div class='type'>${src}</div><div>${txt}</div>`
|
|
target.insertBefore(msg, target.firstChild);
|
|
}
|
|
|
|
/**
|
|
* Set the state of the WebSocket
|
|
*/
|
|
function setState(state) {
|
|
document.getElementById("state").innerText = state;
|
|
}
|
|
|
|
/**
|
|
* Initialize WebSocket connection
|
|
*/
|
|
function connect() {
|
|
disconnect();
|
|
log(JS_MESSAGE, "Initialize connection...");
|
|
ws = new WebSocket("/api/ws");
|
|
setState("Connecting...");
|
|
ws.onopen = function () {
|
|
log(JS_MESSAGE, "Connected to WebSocket !");
|
|
setState("Connected");
|
|
}
|
|
ws.onmessage = function (event) {
|
|
log(IN_MESSAGE, event.data);
|
|
}
|
|
ws.onclose = function () {
|
|
log(JS_MESSAGE, "Disconnected from WebSocket !");
|
|
setState("Disconnected");
|
|
}
|
|
ws.onerror = function (event) {
|
|
console.error("WS Error!", event);
|
|
log(JS_MESSAGE, `Error with websocket! ${event}`);
|
|
setState("Error");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Close WebSocket connection
|
|
*/
|
|
function disconnect() {
|
|
if (ws && ws.readyState === WebSocket.OPEN) {
|
|
log(JS_MESSAGE, "Close connection...");
|
|
ws.close();
|
|
}
|
|
|
|
setState("Disconnected");
|
|
ws = undefined;
|
|
}
|
|
|
|
/**
|
|
* Clear WS logs
|
|
*/
|
|
function clearLogs() {
|
|
document.getElementById("ws_log").innerHTML = "";
|
|
} |