const debug = function() { console.debug(...arguments); }; const log = function() { console.log(...arguments) }; const error = function() { console.error(...arguments) }; async function start() { try { const response = await fetch('./bin/app.wasm'); if (!response.ok) { throw new Error(`Failed to fetch WASM: ${response.status} ${response.statusText}`); } const wasmBytes = await response.arrayBuffer(); const wasmCompiled = await WebAssembly.compile(wasmBytes); const wasmModule = await WebAssembly.instantiate(wasmCompiled, { }); // Set canvas size to match display size function resizeCanvas() { canvas.width = window.innerWidth; canvas.height = window.innerHeight; } resizeCanvas(); window.addEventListener('resize', resizeCanvas); var result = wasmModule.exports.hello(); log("Finished", result); } catch (error) { error('runtime error:', error); } } start(); // ------- debug hot-reload code ------- { const debugCtl = { connect: () => { const ws = new WebSocket(`${window.location.href}control`); ws.onopen = () => { log('Connected to control WebSocket'); }; ws.onmessage = (event) => { try { const message = JSON.parse(event.data); log('Received message:', message); if (message.type === 'refresh') { log('Reloading page...'); window.location.reload(); } } catch (error) { error('Error parsing WebSocket message:', error); } }; ws.onclose = () => { log('WebSocket disconnected, reconnecting in 2s...'); setTimeout(debugCtl.connect, 2000); }; ws.onerror = (error) => { error('WebSocket error:', error); }; } }; debugCtl.connect(); } // -------------------------------------