From b9a1497fdf67dbc2e00e80315156e0fe92f2cfd6 Mon Sep 17 00:00:00 2001 From: Rune Harlyk Date: Sun, 4 Feb 2024 00:56:00 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=AE=20Makes=20each=20socket=20connecti?= =?UTF-8?q?on=20control=20different=20model?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mock/server.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/mock/server.js b/mock/server.js index 44ada30..80d535f 100644 --- a/mock/server.js +++ b/mock/server.js @@ -19,6 +19,15 @@ const randomFloatFromInterval = (min, max) => const radToDeg = (val) => val * (180 / Math.PI); const degToRad = (val) => val * (Math.PI / 180); +function createNewClientState() { + return { + model: JSON.parse(JSON.stringify(model)), + settings: JSON.parse(JSON.stringify(settings)), + logs: [...logs], + subscriptions: {}, + }; +} + function subscribeClientToCategory(ws, category) { if (!subscriptions[category]) { subscriptions[category] = new Set(); @@ -183,6 +192,8 @@ const updateAngles = (angles) => { }; wss.on("connection", (ws) => { + const clientState = createNewClientState(); + ws.clientState = clientState; ws.on("error", console.error); ws.on("message", (message) => { @@ -213,9 +224,12 @@ wss.on("connection", (ws) => { break; case "kinematic/angle": if (data.angle && data.id) { - model.servos.angles[data.id] = data.angle; + ws.clientState.model.servos.angles[data.id] = data.angle; ws.send( - JSON.stringify({ type: "angles", angles: model.servos.angles }) + JSON.stringify({ + type: "angles", + angles: ws.clientState.model.servos.angles, + }) ); } else { ws.send(JSON.stringify(updateAngle(data.id, data.angle))); @@ -223,11 +237,11 @@ wss.on("connection", (ws) => { break; case "kinematic/angles": if (data.angles) { - model.servos.angles = data.angles; + ws.clientState.model.servos.angles = data.angles; ws.send( JSON.stringify({ type: "angles", - angles: model.servos.angles, + angles: ws.clientState.model.servos.angles, }) ); } else {