Initial commit step0
This commit is contained in:
70
step0/main.js
Normal file
70
step0/main.js
Normal file
@@ -0,0 +1,70 @@
|
||||
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();
|
||||
}
|
||||
// -------------------------------------
|
||||
Reference in New Issue
Block a user