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"); } }