Skip to content
Snippets Groups Projects
  • Marcel Kehrberg's avatar
    fa23741f
    Änderungen · fa23741f
    Marcel Kehrberg authored
    -  wenn das Addon reconenter widerherstellung allter informationen
    - block Einstellungen werden übergeben
    - Beim Ende, beim Abbruch oder beim Beednen des Programs wird das Addon benachrichtigt
    - das Distration Objekt wird jetzt richtig im addon erstellt
    fa23741f
    History
    Änderungen
    Marcel Kehrberg authored
    -  wenn das Addon reconenter widerherstellung allter informationen
    - block Einstellungen werden übergeben
    - Beim Ende, beim Abbruch oder beim Beednen des Programs wird das Addon benachrichtigt
    - das Distration Objekt wird jetzt richtig im addon erstellt
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
background.js 4.68 KiB
let socket;
let trackingAktiv = false;
let isConnected = false;
let distraktions;
let withBlock;

function connectWebSocket() {
    if (isConnected) {
        console.log("Bereits verbunden.");
        return;
    }

    // Versuche, eine Verbindung herzustellen
    socket = new WebSocket("ws://localhost:8080");

    // Timeout für die Verbindung (z.B. 5 Sekunden)
    let connectionTimeout = setTimeout(() => {
        console.log("Verbindung timeout, Server reagiert nicht.");
        socket.close();  // Schließt den WebSocket
        isConnected = false; // Setzt isConnected auf false
    }, 5000); // Timeout nach 5 Sekunden

    socket.onopen = function() {
        console.log("Verbunden mit der WPF-Anwendung.");
        clearTimeout(connectionTimeout);
        isConnected = true; // Markiere als verbunden
        socket.send("{\"action\": \"connected\", \"status\": true}");
    };

    // Empfang von Nachrichten
    socket.onmessage = function(event) {
        const message = parseMessage(event.data);
        //console.log("Nachricht empfangen: ", message);
        //navigator.clipboard.writeText(message);

        if(message.action === "sendJsonContent") {
           //navigator.clipboard.writeText(message);
           distraktions = createDistractionList(message);
        }

        if (message.action === "startTracking" && message.status === true) {
            console.log("Tracking gestartet.");
            addTabListeners();
            trackingAktiv = true;
        } else if (message.action === "stopTracking" && message.status === false) {
            console.log("Tracking gestoppt.");
            removeTabListeners();
            trackingAktiv = false;
        }

        if (message.action === "BlockMode" && message.status === true) {
            withBlock = true;
            console.log("Nachricht empfangen: ", message);
        } else if(message.action === "noBlockMode" && message.status === false) {
            withBlock = false;
            console.log("Nachricht empfangen: ", message);
        }
    };

    socket.onclose = function() {
        console.log("Verbindung geschlossen.");
        isConnected = false;
        removeTabListeners();
        trackingAktiv = false;
        // Versuche, nach einer kurzen Zeit erneut eine Verbindung herzustellen
        setTimeout(connectWebSocket, 5000); // 5 Sekunden warten, bevor erneut versucht wird
    };

    socket.onerror = function(error) {
        console.error("WebSocket Fehler:", error);