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
|
||||
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 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");
|
||||
}
|
||||
|
||||
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
|
||||
);
|
||||
});
|
||||
|
||||
//------------------------------------
|
||||
// Änderung prüfen
|
||||
const hasChanged = saveJsonIfChanged(json, lastStatis);
|
||||
if (hasChanged) {
|
||||
lastStatis = statis;
|
||||
socket.emit("gisLinesStatusUpdated", statis);
|
||||
// socket.emit("gisLinesStatusUpdated", statis);
|
||||
console.log("✅ Änderung erkannt und gesendet");
|
||||
} else {
|
||||
console.log("🔁 Keine Änderung festgestellt");
|
||||
}
|
||||
//------------------------------------
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Nur bei Mockdaten: direkt senden
|
||||
socket.emit("gisLinesStatusUpdated", statis);
|
||||
} catch (error) {
|
||||
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