From 629c02bb4edd125f88ebe8b873f6d23544830c89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pr=C3=A9nom=20Nom?= <adresse@mail.com> Date: Mon, 24 Feb 2025 04:16:05 +0100 Subject: [PATCH] =?UTF-8?q?ajout=20gestion=20connexion=20port=20apr=C3=A8s?= =?UTF-8?q?=20refresh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/background/background.js | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/src/background/background.js b/src/background/background.js index 9771adb..ed1098e 100644 --- a/src/background/background.js +++ b/src/background/background.js @@ -761,28 +761,42 @@ browser.runtime.onMessage.addListener(async (message, sender) => { * Gère la connexion entre stats.js et le Worker via un port dédié * @param {Object} port - Le port de communication avec le Worker */ +// Tableau pour stocker tous les ports connectés depuis stats.js +let statsPorts = []; + +// Lorsqu'un content script se connecte via le port "stats-worker-port" browser.runtime.onConnect.addListener((port) => { - log("[Background] Connexion établie :", port.name); if (port.name === "stats-worker-port") { - // Redirige les messages de stats.js vers le Worker + log("[Background] Connexion établie sur stats-worker-port."); + statsPorts.push(port); + + // Rediriger les messages reçus de ce port vers le Worker port.onMessage.addListener((message) => { log("[Background] Message reçu de stats.js :", message); worker.postMessage(message); }); - // Transmettre les réponses du Worker à stats.js via le port - worker.addEventListener("message", (event) => { - const data = event.data; - if (data.type === "update-frequencies") { - port.postMessage({ command: "update-frequencies", frequencies: data.frequencies }); - } - if (data.type === "threshold-exceeded") { - port.postMessage({ command: "threshold-exceeded", wordsAboveThreshold: data.wordsAboveThreshold }); - } + // Lors de la déconnexion, retirer le port du tableau + port.onDisconnect.addListener(() => { + log("[Background] Déconnexion d'un port stats-worker-port."); + statsPorts = statsPorts.filter((p) => p !== port); }); } }); +// Écoute des messages du worker et on les envoie à tous les ports actifs +worker.addEventListener("message", (event) => { + const data = event.data; + // Envoi des messages à tous les ports connectés + statsPorts.forEach((port) => { + if (data.type === "update-frequencies") { + port.postMessage({ command: "update-frequencies", frequencies: data.frequencies }); + } else if (data.type === "threshold-exceeded") { + port.postMessage({ command: "threshold-exceeded", wordsAboveThreshold: data.wordsAboveThreshold }); + } + }); +}); + // ───────────────────────────────────────────────────────────────────────────── // Surlignage // ───────────────────────────────────────────────────────────────────────────── -- GitLab