From db54cc7cca178de2f69d9c09cbefaf6b61dc8b7c Mon Sep 17 00:00:00 2001 From: Ismail Ali Date: Sun, 8 Jun 2025 08:52:45 +0200 Subject: [PATCH] =?UTF-8?q?test:=20WebSocket-Datenpr=C3=BCfung=20erfolgrei?= =?UTF-8?q?ch=20=E2=80=93=20JSON=20wird=20bei=20=C3=84nderung=20gespeicher?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Webservice-Antworten werden nun korrekt mit vorherigen Daten verglichen - Bei Änderungen wird automatisch eine neue JSON-Datei unter /debug erstellt - Keine Datei-Erstellung bei identischen Antworten - Funktion `saveJsonIfChanged` erfolgreich in utils/websocket ausgelagert --- config/appVersion.js | 2 +- server.js | 35 ++++++++++++---------------- utils/websocket/saveJsonIfChanged.js | 32 +++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 21 deletions(-) create mode 100644 utils/websocket/saveJsonIfChanged.js diff --git a/config/appVersion.js b/config/appVersion.js index cf9cb0ac3..050fad774 100644 --- a/config/appVersion.js +++ b/config/appVersion.js @@ -1,2 +1,2 @@ // /config/appVersion -export const APP_VERSION = "1.1.245"; +export const APP_VERSION = "1.1.246"; diff --git a/server.js b/server.js index 52abd3c89..89d206271 100644 --- a/server.js +++ b/server.js @@ -3,6 +3,7 @@ const next = require("next"); const { Server } = require("socket.io"); const fs = require("fs"); const path = require("path"); +const { saveJsonIfChanged } = require("./utils/websocket/saveJsonIfChanged"); const fetch = (...args) => import("node-fetch").then(({ default: fetch }) => fetch(...args)); const dev = process.env.NODE_ENV !== "production"; @@ -47,28 +48,22 @@ app.prepare().then(() => { const json = JSON.parse(text); statis = json?.Statis || []; console.log("📡 Webservice-Daten empfangen"); + //------------------------------------ + // Änderung prüfen + const hasChanged = saveJsonIfChanged(json, lastStatis); + if (hasChanged) { + // socket.emit("gisLinesStatusUpdated", statis); + console.log("✅ Änderung erkannt und gesendet"); + } else { + console.log("🔁 Keine Änderung festgestellt"); + } + //------------------------------------ + + return; } - const hasChanged = - statis.length !== lastStatis.length || - statis.some((entry, index) => { - const prev = lastStatis[index]; - return ( - !prev || - entry.Modul !== prev.Modul || - entry.ModulName !== prev.ModulName || - entry.Value !== prev.Value || - entry.Level !== prev.Level - ); - }); - - if (hasChanged) { - lastStatis = statis; - socket.emit("gisLinesStatusUpdated", statis); - console.log("✅ Änderung erkannt und gesendet"); - } else { - console.log("🔁 Keine Änderung festgestellt"); - } + // Nur bei Mockdaten: direkt senden + socket.emit("gisLinesStatusUpdated", statis); } catch (error) { console.error("❌ Fehler beim Datenabruf:", error.message); } diff --git a/utils/websocket/saveJsonIfChanged.js b/utils/websocket/saveJsonIfChanged.js new file mode 100644 index 000000000..03956ed2e --- /dev/null +++ b/utils/websocket/saveJsonIfChanged.js @@ -0,0 +1,32 @@ +const fs = require("fs"); +const path = require("path"); + +function saveJsonIfChanged(newJson, lastStatisRef) { + const newStatis = newJson?.Statis || []; + + const hasChanged = + newStatis.length !== lastStatisRef.length || + newStatis.some((entry, index) => { + const prev = lastStatisRef[index]; + return ( + !prev || + entry.Modul !== prev.Modul || + entry.ModulName !== prev.ModulName || + entry.Value !== prev.Value || + entry.Level !== prev.Level + ); + }); + + if (hasChanged) { + lastStatisRef.splice(0, lastStatisRef.length, ...newStatis); + + const outputPath = path.join(process.cwd(), "debug", `webserviceDump-${Date.now()}.json`); + fs.mkdirSync(path.dirname(outputPath), { recursive: true }); + fs.writeFileSync(outputPath, JSON.stringify(newJson, null, 2), "utf-8"); + console.log("📝 Webservice-Daten wurden gespeichert:", outputPath); + } + + return hasChanged; +} + +module.exports = { saveJsonIfChanged };