Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst]seltsamer Effekt mit „client Socket“

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

[gelöst]seltsamer Effekt mit „client Socket“

Scheduled Pinned Locked Moved JavaScript
9 Posts 3 Posters 880 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    stoffel67
    wrote on last edited by stoffel67
    #1

    Hallo,
    ich habe einen seltsamen Effekt mit setInterval(...)
    ich will eine Funktion alle 10 Sekunden aufrufen. die Funktion wird aber immer "noch einmal "zusätzlich" ausgeführt, also nach 10 Sekunden 1x nach 20 Sekunden 2x nach 30 Sekunden 3x... usw.
    was ist da falsch.. anbei das Skript....

    var net = require("net");
    const crc16 = require('crc/crc16ccitt');
    
    function calc_crc (str) {
    var erg =crc16(str).toString(16).toUpperCase();
    //console.log ("CRC:"+erg)
    return erg
    }
    
    
    const host = "10.10.10.10";
    const port = 5688;
    
    var client = net.Socket();
    
    var message=""
    //var array[]
    
    function Hottoh_message(message) {
        var sendstr= "#"+message+calc_crc(message)+"\n"
        //console.log(sendstr)
        client.connect(port,host,function () {
            console.log("Connected ");
            client.write(sendstr);
         });
        client.on("data", (data) => {
            console.log(`Received: ${data}`);
            //var arr = data.toString().split(";");
            //console.log(arr.length)
            //arr.forEach((element) => {
            //    console.log(element);
            //    });
            client.end();
        });
        client.on("error", (error) => {
            console.log(`Error: ${error.message}`);
            client.destroy();
        });
        client.on("close", () => {
            console.log("Connection closed");
            client.destroy();
        });
    };
    
    
    setInterval(Hottoh_message,10000,"00000C---0002DATR0;")
    //schedule('* * * * * *',function() { Hottoh_message("00000C---0002DATR0;")});
    

    oder ist da mit net socket etwas nicht iO?

    Mein Adapter: JUNG/GIRA eNet-Adapter

    Marc BergM 1 Reply Last reply
    0
    • S stoffel67

      Hallo,
      ich habe einen seltsamen Effekt mit setInterval(...)
      ich will eine Funktion alle 10 Sekunden aufrufen. die Funktion wird aber immer "noch einmal "zusätzlich" ausgeführt, also nach 10 Sekunden 1x nach 20 Sekunden 2x nach 30 Sekunden 3x... usw.
      was ist da falsch.. anbei das Skript....

      var net = require("net");
      const crc16 = require('crc/crc16ccitt');
      
      function calc_crc (str) {
      var erg =crc16(str).toString(16).toUpperCase();
      //console.log ("CRC:"+erg)
      return erg
      }
      
      
      const host = "10.10.10.10";
      const port = 5688;
      
      var client = net.Socket();
      
      var message=""
      //var array[]
      
      function Hottoh_message(message) {
          var sendstr= "#"+message+calc_crc(message)+"\n"
          //console.log(sendstr)
          client.connect(port,host,function () {
              console.log("Connected ");
              client.write(sendstr);
           });
          client.on("data", (data) => {
              console.log(`Received: ${data}`);
              //var arr = data.toString().split(";");
              //console.log(arr.length)
              //arr.forEach((element) => {
              //    console.log(element);
              //    });
              client.end();
          });
          client.on("error", (error) => {
              console.log(`Error: ${error.message}`);
              client.destroy();
          });
          client.on("close", () => {
              console.log("Connection closed");
              client.destroy();
          });
      };
      
      
      setInterval(Hottoh_message,10000,"00000C---0002DATR0;")
      //schedule('* * * * * *',function() { Hottoh_message("00000C---0002DATR0;")});
      

      oder ist da mit net socket etwas nicht iO?

      Marc BergM Offline
      Marc BergM Offline
      Marc Berg
      Most Active
      wrote on last edited by
      #2

      @stoffel67
      Ich vermute, mit jedem Aufruf der Funktion "hottoh_message" werden neue Listener zu den schon bestehenden hinzugefügt. Darum sollten die "client.on" Methoden außerhalb der Funktion definiert werden.

      NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

      Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN, Arduino, KiCad

      Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

      B 1 Reply Last reply
      0
      • Marc BergM Marc Berg

        @stoffel67
        Ich vermute, mit jedem Aufruf der Funktion "hottoh_message" werden neue Listener zu den schon bestehenden hinzugefügt. Darum sollten die "client.on" Methoden außerhalb der Funktion definiert werden.

        B Offline
        B Offline
        Blockmove
        wrote on last edited by
        #3

        @marc-berg said in seltsamer Effekt mit setInterval bzw. schedule:

        @stoffel67
        Ich vermute, mit jedem Aufruf der Funktion "hottoh_message" werden neue Listener zu den schon bestehenden hinzugefügt. Darum sollten die "client.on" Methoden außerhalb der Funktion definiert werden.

        Klingt plausibel ... Aber sollten die Listener nicht mit destroy gelöscht werden?

        The difference beetween Man and Boys:
        The price of their toys 😀

        Marc BergM 1 Reply Last reply
        0
        • B Blockmove

          @marc-berg said in seltsamer Effekt mit setInterval bzw. schedule:

          @stoffel67
          Ich vermute, mit jedem Aufruf der Funktion "hottoh_message" werden neue Listener zu den schon bestehenden hinzugefügt. Darum sollten die "client.on" Methoden außerhalb der Funktion definiert werden.

          Klingt plausibel ... Aber sollten die Listener nicht mit destroy gelöscht werden?

          Marc BergM Offline
          Marc BergM Offline
          Marc Berg
          Most Active
          wrote on last edited by
          #4

          @blockmove sagte in seltsamer Effekt mit setInterval bzw. schedule:

          Aber sollten die Listener nicht mit destroy gelöscht werden?

          Werden sie doch bei den entsprechenden Ereignissen. Wobei es wohl sinnvoll ist, vorher noch die Listener zu entfernen, sonst kann es Speicherlecks geben.

          client.on("data", (data) => {
              console.log(`Received: ${data}`);
              client.end();
          });
          
          client.on("error", (error) => {
              console.log(`Error: ${error.message}`);
              client.removeAllListeners();
              client.destroy();
          });
          
          client.on("close", () => {
              console.log("Connection closed");
              client.removeAllListeners();
              client.destroy();
          });
          

          NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

          Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN, Arduino, KiCad

          Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

          S 1 Reply Last reply
          1
          • Marc BergM Marc Berg

            @blockmove sagte in seltsamer Effekt mit setInterval bzw. schedule:

            Aber sollten die Listener nicht mit destroy gelöscht werden?

            Werden sie doch bei den entsprechenden Ereignissen. Wobei es wohl sinnvoll ist, vorher noch die Listener zu entfernen, sonst kann es Speicherlecks geben.

            client.on("data", (data) => {
                console.log(`Received: ${data}`);
                client.end();
            });
            
            client.on("error", (error) => {
                console.log(`Error: ${error.message}`);
                client.removeAllListeners();
                client.destroy();
            });
            
            client.on("close", () => {
                console.log("Connection closed");
                client.removeAllListeners();
                client.destroy();
            });
            
            S Offline
            S Offline
            stoffel67
            wrote on last edited by
            #5

            @marc-berg said in seltsamer Effekt mit setInterval bzw. schedule:

            client.removeAllListeners();

            habs eingebaut... und siehe da Aufruf erfolgt jetzt nur noch einmal :+1:
            wa smeinst du mir "client on" Methode ausserhald definieren?

            Mein Adapter: JUNG/GIRA eNet-Adapter

            Marc BergM 1 Reply Last reply
            0
            • S stoffel67

              @marc-berg said in seltsamer Effekt mit setInterval bzw. schedule:

              client.removeAllListeners();

              habs eingebaut... und siehe da Aufruf erfolgt jetzt nur noch einmal :+1:
              wa smeinst du mir "client on" Methode ausserhald definieren?

              Marc BergM Offline
              Marc BergM Offline
              Marc Berg
              Most Active
              wrote on last edited by
              #6

              @stoffel67 sagte in seltsamer Effekt mit setInterval bzw. schedule:

              wa smeinst du mir "client on" Methode ausserhald definieren?

              Ich glaube, die Überlegung war nicht zielführend, so wie du die Funktion aufrufst.

              NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

              Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN, Arduino, KiCad

              Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

              S 1 Reply Last reply
              0
              • Marc BergM Marc Berg

                @stoffel67 sagte in seltsamer Effekt mit setInterval bzw. schedule:

                wa smeinst du mir "client on" Methode ausserhald definieren?

                Ich glaube, die Überlegung war nicht zielführend, so wie du die Funktion aufrufst.

                S Offline
                S Offline
                stoffel67
                wrote on last edited by
                #7

                @marc-berg
                Sorry, aber ich versteh nicht was du damit meinst… „nicht zielführend“
                (bitte die Rechtschreibfehler oben zu entschuldigen)

                Mein Adapter: JUNG/GIRA eNet-Adapter

                Marc BergM 1 Reply Last reply
                0
                • S stoffel67

                  @marc-berg
                  Sorry, aber ich versteh nicht was du damit meinst… „nicht zielführend“
                  (bitte die Rechtschreibfehler oben zu entschuldigen)

                  Marc BergM Offline
                  Marc BergM Offline
                  Marc Berg
                  Most Active
                  wrote on last edited by
                  #8

                  @stoffel67 sagte in seltsamer Effekt mit setInterval bzw. schedule:

                  aber ich versteh nicht was du damit meinst… „nicht zielführend“

                  Ich wollte damit nur sagen, dass meine Überlegung, die "client.on" Methoden aus der Hauptfunktion auszulagern, in deinem Fall wohl nicht zum Ziel geführt hätten. Aber dafür bin ich in der Programmierung nicht fit genug. Wenn das saubere Entfernen der Listener es jetzt gebracht hat, ist doch alles gut.

                  NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

                  Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN, Arduino, KiCad

                  Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

                  S 1 Reply Last reply
                  0
                  • Marc BergM Marc Berg

                    @stoffel67 sagte in seltsamer Effekt mit setInterval bzw. schedule:

                    aber ich versteh nicht was du damit meinst… „nicht zielführend“

                    Ich wollte damit nur sagen, dass meine Überlegung, die "client.on" Methoden aus der Hauptfunktion auszulagern, in deinem Fall wohl nicht zum Ziel geführt hätten. Aber dafür bin ich in der Programmierung nicht fit genug. Wenn das saubere Entfernen der Listener es jetzt gebracht hat, ist doch alles gut.

                    S Offline
                    S Offline
                    stoffel67
                    wrote on last edited by
                    #9

                    @marc-berg
                    OK, jetzt hab ich‘s verstanden…
                    nochmals vielen Dank für den Hinweis
                    ich ändere noch den Titel, so ist er missverständlich…

                    Mein Adapter: JUNG/GIRA eNet-Adapter

                    1 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    636

                    Online

                    32.7k

                    Users

                    82.4k

                    Topics

                    1.3m

                    Posts
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Home
                    • Recent
                    • Tags
                    • Unread 0
                    • Categories
                    • Unreplied
                    • Popular
                    • GitHub
                    • Docu
                    • Hilfe