From 26363739848bfb182e44e935375dee56ff1a108a Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 28 Jan 2025 00:44:13 -0500 Subject: [PATCH] add websocket state management for bambu mod --- mods/bambu/bambu.js | 46 +++++++++++++++++++++++++++++++++++++++++++-- mods/bambu/init.js | 14 ++++++++++++++ 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/mods/bambu/bambu.js b/mods/bambu/bambu.js index eb877fbc..65f3876a 100644 --- a/mods/bambu/bambu.js +++ b/mods/bambu/bambu.js @@ -15,7 +15,41 @@ self.kiri.load(api => { let init = false; let bound, device, printers, select, selected; let btn_del, in_host, in_code, in_serial; - let host, password, serial, amsmap; + let host, password, serial, amsmap, socket = { + open: false, + q: [], + start() { + if (socket.ws) { + return; + } + let ws = socket.ws = new WebSocket("/bambu"); + ws.onopen = () => { + socket.open = true; + socket.drain(); + }; + ws.onclose = () => { + socket.open = false; + }; + ws.onmessage = msg => { + console.log({ msg: msg.data }); + }; + }, + stop() { + if (socket.ws) { + socket.ws.close(); + } + }, + drain() { + while (socket.open && socket.q.length) { + socket.ws.send(JSON.stringify(socket.q.shift())); + } + }, + send(msg) { + socket.start(); + socket.q.push(msg); + socket.drain(); + } + }; function printer_add() { let name = prompt('printer name'); @@ -29,7 +63,6 @@ self.kiri.load(api => { } function printer_del() { - console.log('printer del', selected.name); if (!selected.name) { return; } @@ -48,6 +81,7 @@ self.kiri.load(api => { in_host.onkeypress = in_host.onblur = () => rec.host = in_host.value; in_code.onkeypress = in_code.onblur = () => rec.code = in_code.value; in_serial.onkeypress = in_serial.onblur = () => rec.serial = in_serial.value; + monitor_start(rec); } function render_list() { @@ -60,6 +94,14 @@ self.kiri.load(api => { })); } + function monitor_start(rec) { + socket.send({ cmd: "monitor", ...rec }); + } + + function monitor_stop() { + socket.stop(); + } + api.event.on("init-done", function() { if (init) { return; diff --git a/mods/bambu/init.js b/mods/bambu/init.js index 80bc4c6e..0dacf418 100644 --- a/mods/bambu/init.js +++ b/mods/bambu/init.js @@ -174,4 +174,18 @@ module.exports = async (server) => { }); }; + server.ws.register("/bambu", function(ws, req) { + console.log('ws open', req.url); + ws.on('message', msg => { + msg = JSON.parse(msg); + console.log(msg); + switch (msg.cmd) { + case "monitor": + break; + } + }); + ws.on('close', () => { + console.log('WS CLOSE'); + }); + }); };