4 <meta charset="utf-8"/>
5 <title>IID Coffee Terminal</title>
7 function loadServerScript() {
8 let script = document.createElement('script');
9 script.src = "http://localhost:5000/js";
10 document.head.append(script);
11 script.onerror = function() {
12 this.parentElement.removeChild(this);
13 setTimeout(loadServerScript, 10000);
22 console.log("connecting...");
23 socket = new WebSocket(
24 "ws://" + document.domain + ':' + location.port,
25 "merica-terminal-protocol"
28 socket.onopen = function() {
29 console.log("socket open");
30 document.getElementById("inputStatus").innerHTML = "connected";
33 socket.onclose = function() {
34 console.log("socket closed");
35 document.getElementById("inputStatus").innerHTML = "disconnected";
37 setTimeout(connect, 10000);
40 socket.onmessage = function(msg) {
41 updateJSONmsg(msg.data);
42 if (typeof updateRemote === "function") {
43 updateRemote(msg.data);
46 let queue = JSON.parse(localStorage.getItem("offlineQueue")) || [];
47 queue.push({ time: Date.now(), data: msg.data });
49 localStorage.setItem("offlineQueue", JSON.stringify(queue));
61 function updateJSONmsg(msg) {
62 document.getElementById("localJSON").innerHTML = msg;
64 function printLocalStorage() {
67 if (localStorage.length) {
68 for (var i = 0; i < localStorage.length; i++) {
69 output += localStorage.key(i) + ': ' + localStorage.getItem(localStorage.key(i)) + '<br>';
72 output += "nobody here anymore!";
75 output += "localStorage not supported";
78 updateJSONmsg(output);
81 function clearLocalStorage() {
87 function sendReset() {
92 function sendClose() {
100 <h1>IID Coffee Terminal</h1>
103 <div id="remote"><center>No data from server.</center></div>
109 <button onclick="sendReset()">reset</button>
110 <span style="display:inline-block; width: 20pt;"></span>
111 <button onclick="sendClose()">close</button>
112 <span style="display:inline-block; width: 20pt;"></span>
113 <button onclick="printLocalStorage()">storage</button>
114 <span style="display:inline-block; width: 20pt;"></span>
115 <button onclick="clearLocalStorage()">clear</button>
116 <span style="display:inline-block; width: 20pt;"></span>
117 <button onclick="location.reload()">reload</button>
118 <p>Input: <span id="inputStatus"></span>, JSON message: <span id="localJSON">no data received</span></p>