Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] net.connect() Fehler lässt Javascript Adapter abstürzen.

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    [gelöst] net.connect() Fehler lässt Javascript Adapter abstürzen.

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      DerGraf123 last edited by

      Hallo,

      ich habe ein Script, welches einen lokalen Telnet-Server an Port 3083 abfragt. Funktioniert soweit super.

      Nun habe ich jedoch das Problem, dass wenn der Telnet-Server abschmiert, bzw. Port 3083 nicht erreichbar ist, der ganze Javascript Adapter abschmiert und sich neu startet. Im Log findet sich dann folgender Fehlereintrag:````
      javascript.0 2017-07-08 12:48:13.979 info starting. Version 3.2.6 in /volume1/@optware/iobroker/node_modules/iobroker.javascript, node: v4.8.0
      host.Server 2017-07-08 12:48:11.670 info instance system.adapter.javascript.0 started with pid 30466
      host.Server 2017-07-08 12:47:41.652 info Restart adapter system.adapter.javascript.0 because enabled
      host.Server 2017-07-08 12:47:41.652 error instance system.adapter.javascript.0 terminated with code 0 (OK)
      javascript.0 2017-07-08 12:47:41.617 info terminating
      javascript.0 2017-07-08 12:47:41.607 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1078:14)
      javascript.0 2017-07-08 12:47:41.607 error at exports._exceptionWithHostPort (util.js:930:20)
      javascript.0 2017-07-08 12:47:41.607 error at Object.exports._errnoException (util.js:907:11)
      javascript.0 2017-07-08 12:47:41.607 error Error: connect ECONNREFUSED 127.0.0.1:3083
      javascript.0 2017-07-08 12:47:41.599 error uncaught exception: connect ECONNREFUSED 127.0.0.1:3083

      
      Den Aufruf des Telnet-Servers starte ich mit net.connect()````
      function readTelnet3083() {
      var client = net.connect(3083, function () {
          client.on('data', function(data) {
          	...
          	...
          	...
          });
          client.on('end', function () {
              console.log('Daten ausgelesen');
          });
          client.on('error', function(err) {
              console.log('error:', err.message);
          });
          client.write('command 1\n');
          client.write('command 2\n');
          client.end();
      });
      }
      
      setInterval(function() { readTelnet3083(); }, 60000);
      

      Wie oder wo kann ich einen Verbindungsfehler abfangen, ohne das der ganze Javascript Adapter abschmiert.

      Idealerweise würde ich an der Stelle mittels exec() den Telnet-Server neu starten.

      Für Hilfe danke ich im Voraus.

      1 Reply Last reply Reply Quote 0
      • apollon77
        apollon77 last edited by

        Grad unterwegs, daher nur die Richtung: try { connect Befehl} catch (e) { Code für Fehlerfall, logging oder so}

        1 Reply Last reply Reply Quote 0
        • D
          DerGraf123 last edited by

          So hat es schon mal nicht funktioniert. Der Javascript Adapter schießt sich weiterhin ab. Der Log Eintrag von catch(e) taucht auch nicht auf 😞

          setInterval(function() { 
              try { readTelnet3083(); } catch (e) { console.log("Telnet Server nicht erreichbar"); } 
          }, 60000);
          
          1 Reply Last reply Reply Quote 0
          • apollon77
            apollon77 last edited by

            Bau es mal direkt in deine read Funktion um das net.connect ein

            1 Reply Last reply Reply Quote 0
            • D
              DerGraf123 last edited by

              Problem gelöst.

              Aufrufe von nicht erreichbaren Dienste innerhalb von net.connect() führt zum Absturz des Javascript Adapters. Ich habe es nun etwas umformuliert. Hierbei greift nun auch der Error Handler. Auf diesem Wege habe ich auch direkt einen Timeout-Schutz hinzugefügt. Vielleicht kann es jemand gebrauchen 😉

              var net = require('net');
              
              function readTelnet3083() {
                  var client = new net.Socket();
                  client.setTimeout(1000, function() { client.destroy(); });
                  client.connect(3083, function() { console.log("Verbunden"); });
                  client.on('data', function(data) {
                  	...
                  	... Hier wird die Telnet Ausgabe geparsed
                  	...
                  });
                  client.on('end', function () {
                      console.log('Daten ausgelesen');
                  });
                  client.write('command 1\n');
                  client.write('command 2\n');
                  client.end();
                  client.on('error', function(err) {
                      client.destroy();
                      console.log('Telnet Server nicht erreichbar. Telnet Neustart');
                      exec('/etc/init.d/telnetservice restart');
                  });
              }
              
              setInterval(function() { readTelnet3083(); }, 60000);    
              
              

              Werde noch den Thread-Titel anpassen, da dieser ja nun überhaupt nicht mehr passt 😉

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              552
              Online

              31.6k
              Users

              79.4k
              Topics

              1.3m
              Posts

              2
              5
              975
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo