felt/static/socket.js

49 lines
No EOL
1.3 KiB
JavaScript

let tableKey = {
name: "",
passcode: ""
}
let table = null;
let conn = null;
function dial() {
// get tableKey from UI
const tblNameInput = document.getElementById("input_table_name");
const tblPassInput = document.getElementById("input_table_pass");
if (tblNameInput && tblPassInput && tblNameInput.value && tblPassInput.value) {
tableKey.name = tblNameInput.value;
tableKey.passcode = tblPassInput.value;
conn = new WebSocket(`ws://${location.host}/subscribe`, `${tableKey.name}.${tableKey.passcode}`);
conn.addEventListener("close", e => {
if (e.code !== 1001) {
// TODO: add message to let user know they are reconnecting
setTimeout(dial, 1000)
}
});
conn.addEventListener("open", e => {
// TODO: add message to let user know they are at the table
console.info("socket connected");
});
conn.addEventListener("message", e => {
console.log(e.data);
if (table == null) {
table = JSON.parse(e.data);
} else {
// UPDATE THE TABLE!
}
});
}
}
async function publish(msg) {
msg.key = tableKey;
const res = await fetch('/publish', {
method: 'POST',
body: JSON.stringify(msg)
});
if (!res.ok) {
setErr("Failed to publish message");
}
}