From cc9cf987b141b948b84eecdf454550cc14feec48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20CHOMAZ?= Date: Tue, 3 Feb 2026 20:42:04 +0100 Subject: [PATCH] =?UTF-8?q?(update)=20Mise=20=C3=A0=20jour=20de=20Score-Ma?= =?UTF-8?q?nager.js=20pour=20ajouter=20le=20mecanisme=20de=20request=20des?= =?UTF-8?q?=20scores=20(utiles=20en=20cas=20de=20reload=20de=20page).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VNode/services/game/score-manager.js | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/VNode/services/game/score-manager.js b/VNode/services/game/score-manager.js index 519e363a..52f1b512 100644 --- a/VNode/services/game/score-manager.js +++ b/VNode/services/game/score-manager.js @@ -114,6 +114,10 @@ function updateTeamTotalScore(teamColor, points) { // Mettre à jour le score jsonData.TEAM[teamColor].TotalScore += points; + + // Update global state + global.jsonData = jsonData; + console.log(`Le score total pour l'équipe ${teamColor} est de ${jsonData.TEAM[teamColor].TotalScore} points !`) // Enregistrer les modifications dans le fichier client.publish(mqttScoreTopic, JSON.stringify(jsonData)); @@ -136,10 +140,10 @@ const configPath = path.join(__dirname, '../config/configuration.json'); const config = JSON.parse(fs.readFileSync(configPath, 'utf8')); // Extraction des informations de config -const { mqttHost, services: { score: { MQTTconfig: { mqttScoreTopic, mqttScoreChangeTopic } } } } = config; +const { mqttHost, services: { score: { MQTTconfig: { mqttScoreTopic, mqttScoreChangeTopic, mqttScoreRequestTopic } } } } = config; console.log("DEBUG: Config loaded from:", configPath); console.log("DEBUG: MQTT Host:", mqttHost); -console.log("DEBUG: Topics:", mqttScoreTopic, mqttScoreChangeTopic); +console.log("DEBUG: Topics:", mqttScoreTopic, mqttScoreChangeTopic, mqttScoreRequestTopic); // Connexion au broker MQTT const client = mqtt.connect(mqttHost); @@ -152,10 +156,27 @@ client.on('connect', () => { else console.log(`[INFO] Souscription réalisée avec succès au topic ${mqttScoreChangeTopic}]`); }); + client.subscribe(mqttScoreRequestTopic, (err) => { + if (err) console.error('[ERROR] impossible de souscrire au topic de demande de score'); + else console.log(`[INFO] Souscription réalisée avec succès au topic ${mqttScoreRequestTopic}]`); + }); + }); // Gestion des messages entrants client.on('message', (topic, message) => { + // Gestion de la demande de score (REFRESH) + if (topic === mqttScoreRequestTopic) { + console.log(`[INFO] Demande de rafraîchissement des scores reçue sur ${topic}`); + if (global.jsonData) { + client.publish(mqttScoreTopic, JSON.stringify(global.jsonData)); + console.log(`[INFO] Scores envoyés sur ${mqttScoreTopic}`); + } else { + console.warn("[WARN] Aucune donnée de score disponible pour le rafraîchissement."); + } + return; // Fin du traitement pour ce message + } + let payload; let process; let Team; @@ -232,6 +253,9 @@ function updateTeamScoreAbsolute(teamColor, totalScore, roundScore) { console.log(`Mise à jour absolue pour ${teamColor} -> Total: ${jsonData.TEAM[teamColor].TotalScore}, Round: ${jsonData.TEAM[teamColor].RoundScore}`); + // Update global state + global.jsonData = jsonData; + client.publish(mqttScoreTopic, JSON.stringify(jsonData)); fs.writeFile(filePath, JSON.stringify(jsonData, null, 2), (err) => { if (err) console.error("Erreur d'écriture :", err);