Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] net.connect() Fehler lässt Javascript Adapter abstürzen.

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    23
    1
    1.3k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

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

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
5 Beiträge 2 Kommentatoren 1.1k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D Offline
    D Offline
    DerGraf123
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      schrieb am zuletzt editiert von
      #2

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

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Antwort Letzte Antwort
      0
      • D Offline
        D Offline
        DerGraf123
        schrieb am zuletzt editiert von
        #3

        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 Antwort Letzte Antwort
        0
        • apollon77A Offline
          apollon77A Offline
          apollon77
          schrieb am zuletzt editiert von
          #4

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

          Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

          • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
          • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
          1 Antwort Letzte Antwort
          0
          • D Offline
            D Offline
            DerGraf123
            schrieb am zuletzt editiert von
            #5

            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 Antwort Letzte Antwort
            0
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            547

            Online

            32.5k

            Benutzer

            81.7k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Anmelden

            • Du hast noch kein Konto? Registrieren

            • Anmelden oder registrieren, um zu suchen
            • Erster Beitrag
              Letzter Beitrag
            0
            • Home
            • Aktuell
            • Tags
            • Ungelesen 0
            • Kategorien
            • Unreplied
            • Beliebt
            • GitHub
            • Docu
            • Hilfe