add websocket state management for bambu mod
This commit is contained in:
parent
b75ef627a7
commit
2636373984
2 changed files with 58 additions and 2 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
});
|
||||
});
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in a new issue