WS statt Telnet

This commit is contained in:
chk
2026-03-09 20:15:18 +01:00
parent 9480f40233
commit f2a675a652
8 changed files with 221 additions and 327 deletions

View File

@@ -9,88 +9,72 @@ const FluidNCClient = require("./fluidnc/FluidNCClient");
const app = express();
app.use(express.static(path.join(__dirname,"../web")));
// Serve frontend
app.use(express.static(path.join(__dirname, "../web")));
const server = https.createServer({
key: fs.readFileSync(path.join(__dirname,"../cert/key.pem")),
cert: fs.readFileSync(path.join(__dirname,"../cert/cert.pem"))
},app);
// HTTPS server
const server = https.createServer(
{
key: fs.readFileSync(path.join(__dirname, "../cert/key.pem")),
cert: fs.readFileSync(path.join(__dirname, "../cert/cert.pem"))
},
app);
const wss = new WebSocket.Server({server});
// Websocket server (browser connections)
const wss = new WebSocket.Server({ server });
const fluid = new FluidNCClient();
// Create FluidNC WebSocket client
const fluid = new FluidNCClient(config.fluidnc);
// Connected browser clients
let clients = [];
wss.on("connection",(ws)=>{
console.log("[WS] Client connected");
wss.on("connection", (ws) => {
console.log("[WS] Browser connected");
clients.push(ws);
ws.on("message",(msg)=>{
try{
ws.on("message", (msg) => {
try {
const data = JSON.parse(msg);
console.log("[WS] Received message:", data);
if(data.type==="jog"){
fluid.jog(data.axis,data.value);
if (data.type === "jog") {
fluid.jog(data.axis, data.value);
}
if(data.type==="gcode"){
if (data.type === "gcode") {
fluid.sendGcode(data.cmd);
}
if(data.type==="zero"){
if (data.type === "zero") {
fluid.setZero();
}
}catch(e){
console.log("[WS] Error parsing message:", e);
} catch (e) {
console.log("[WS] Error parsing:", e);
}
});
ws.on("close",()=>{
clients = clients.filter(c=>c!==ws);
console.log("[WS] Client disconnected");
ws.on("close", () => {
clients = clients.filter(c => c !== ws);
console.log("[WS] Browser disconnected");
});
});
fluid.onMessage((msg)=>{
const json = JSON.stringify(msg);
clients.forEach(c=>{
if(c.readyState===WebSocket.OPEN){
c.send(json);
// FluidNC → Browser broadcasting
fluid.onMessage((msg) => {
clients.forEach(c => {
if (c.readyState === WebSocket.OPEN) {
c.send(msg.toString());
}
});
});
server.listen(config.server.port,()=>{
// Status polling ("?" every 200ms)
setInterval(() => {
fluid.requestStatus();
}, 200);
server.listen(config.server.port, () => {
console.log("[Server] Running at:");
console.log(`https://localhost:${config.server.port}`);
});