<html> <head> <script src="https://code.jquery.com/jquery-3.6.0.js"></script> <script> const WSState = { CONNECTING:0, OPEN:1, CLOSING:1, CLOSED: 1 }; let scenes = []; let ws; function clickedScene(index) { const name = scenes[index]; if (ws && ws.readyState == WSState.Open) { ws.send(JSON.stringify({set_scene:{index, name}})); } } async function go() { await $.when($.ready); function doWebsocket() { ws = new WebSocket(`ws://${document.location.host}:8080`); ws.onclose = () => { document.getElementById('scenelist').innerHTML = ""; setTimeout(doWebsocket, 3000); }; ws.onmessage = ev => { try { const data = JSON.parse(ev.data); if (Array.isArray(data.scenes)) { scenes = data.scenes; document.getElementById('scenelist').innerHTML = data.scenes.map((scene, i) => `<input type=button onclick='clickedScene(${i})' value="${scene}">` ).join('<br>'); } } catch {} }; } doWebsocket(); } go(); </script> </head> <body> <div id=scenelist></div> </body> </html>