test: WebSocket-Datenprüfung erfolgreich – JSON wird bei Änderung gespeichert
- 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
This commit is contained in:
@@ -1,2 +1,2 @@
|
|||||||
// /config/appVersion
|
// /config/appVersion
|
||||||
export const APP_VERSION = "1.1.245";
|
export const APP_VERSION = "1.1.246";
|
||||||
|
|||||||
29
server.js
29
server.js
@@ -3,6 +3,7 @@ const next = require("next");
|
|||||||
const { Server } = require("socket.io");
|
const { Server } = require("socket.io");
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
|
const { saveJsonIfChanged } = require("./utils/websocket/saveJsonIfChanged");
|
||||||
const fetch = (...args) => import("node-fetch").then(({ default: fetch }) => fetch(...args));
|
const fetch = (...args) => import("node-fetch").then(({ default: fetch }) => fetch(...args));
|
||||||
|
|
||||||
const dev = process.env.NODE_ENV !== "production";
|
const dev = process.env.NODE_ENV !== "production";
|
||||||
@@ -47,28 +48,22 @@ app.prepare().then(() => {
|
|||||||
const json = JSON.parse(text);
|
const json = JSON.parse(text);
|
||||||
statis = json?.Statis || [];
|
statis = json?.Statis || [];
|
||||||
console.log("📡 Webservice-Daten empfangen");
|
console.log("📡 Webservice-Daten empfangen");
|
||||||
}
|
//------------------------------------
|
||||||
|
// Änderung prüfen
|
||||||
const hasChanged =
|
const hasChanged = saveJsonIfChanged(json, lastStatis);
|
||||||
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) {
|
if (hasChanged) {
|
||||||
lastStatis = statis;
|
// socket.emit("gisLinesStatusUpdated", statis);
|
||||||
socket.emit("gisLinesStatusUpdated", statis);
|
|
||||||
console.log("✅ Änderung erkannt und gesendet");
|
console.log("✅ Änderung erkannt und gesendet");
|
||||||
} else {
|
} else {
|
||||||
console.log("🔁 Keine Änderung festgestellt");
|
console.log("🔁 Keine Änderung festgestellt");
|
||||||
}
|
}
|
||||||
|
//------------------------------------
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Nur bei Mockdaten: direkt senden
|
||||||
|
socket.emit("gisLinesStatusUpdated", statis);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("❌ Fehler beim Datenabruf:", error.message);
|
console.error("❌ Fehler beim Datenabruf:", error.message);
|
||||||
}
|
}
|
||||||
|
|||||||
32
utils/websocket/saveJsonIfChanged.js
Normal file
32
utils/websocket/saveJsonIfChanged.js
Normal file
@@ -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 };
|
||||||
Reference in New Issue
Block a user