Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Socket Problem - uncaught exception bei connect

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Socket Problem - uncaught exception bei connect

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

      Hallo zusammen,
      ich möchte in einem Event getriggerten JavaScript einen String an einen Server schicken. Das funktioniert auch, solange der Server, an den der String geschickt wird, verfügbar ist. Ist er nicht verfügbar, kommt es nach kurzer Zeit zu einer Excetion und der komplette Scripting Adapter startet neu. Kann mir jemand helfen, wie ich diese Exception fangen bzw. vermeiden kann? Schonmal vielen Dank!
      Gruß
      Alexi

      Hier das Script:

      var net = require('net');
      
      on({ id: /^sonoff.0.*.POWER|^sonoff.0.*.ENERGY_Power/, change: 'ne' },
          function (obj)
          {
              var client = new net.Socket();
              log(obj.id + ": " + obj.state.val);
              client.connect(47222, '192.168.5.66', function() {
                  log('Connected');
                  client.write(obj.id + ": " + obj.state.val+"#");
                  log('Written');
              });
              
              client.on('data', function(data) {
                  log('Received: ' + data);
                  client.destroy(); // kill client after server's response
              });
      
              client.on('close', function() {
                  log('Connection closed');
              });
      
              client.on('timeout', function() {
                  log('Connection timeout');
                  client.destroy(); // kill client after timeout
              });
          });
      

      und hier der Log:

      host.my_host	2020-04-19 09:52:59.250	info	Restart adapter system.adapter.javascript.0 because enabled
      host.my_host	2020-04-19 09:52:59.250	info	instance system.adapter.javascript.0 terminated with code 0 (NO_ERROR)
      host.my_host	2020-04-19 09:52:59.249	error	Caught by controller[0]: port: 47222 }
      host.my_host	2020-04-19 09:52:59.249	error	Caught by controller[0]: address: '192.168.5.66',
      host.my_host	2020-04-19 09:52:59.249	error	Caught by controller[0]: syscall: 'connect',
      host.my_host	2020-04-19 09:52:59.249	error	Caught by controller[0]: code: 'ETIMEDOUT',
      host.my_host	2020-04-19 09:52:59.249	error	Caught by controller[0]: errno: 'ETIMEDOUT',
      host.my_host	2020-04-19 09:52:59.249	error	Caught by controller[0]: at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14)
      host.my_host	2020-04-19 09:52:59.249	error	Caught by controller[0]: { Error: connect ETIMEDOUT 192.168.5.66:47222
      javascript.0	2020-04-19 09:52:58.681	info	(1080) Terminated (NO_ERROR): Without reason
      javascript.0	2020-04-19 09:52:58.681	info	(1080) terminating
      javascript.0	2020-04-19 09:52:58.666	info	(1080) script.js.Test.Test: Connection closed
      javascript.0	2020-04-19 09:52:58.661	info	(1080) Stop script script.js.common.Script_n
      [...]
      javascript.0	2020-04-19 09:52:58.653	info	(1080) Stop script script.js.common.Script_2
      javascript.0	2020-04-19 09:52:58.653	info	(1080) Stop script script.js.common.Script_1
      javascript.0	2020-04-19 09:52:58.653	error	(1080) Error: connect ETIMEDOUT 192.168.5.66:47222 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14)
      javascript.0	2020-04-19 09:52:58.653	error	(1080) uncaught exception: connect ETIMEDOUT 192.168.5.66:47222
      javascript.0	2020-04-19 09:56:46.377	info	(6952) script.js.Test.Test: sonoff.0.Steckdose1.ENERGY_Power: 0
      javascript.0	2020-04-19 09:56:36.393	info	(6952) script.js.Test.Test: sonoff.0.Steckdose1.ENERGY_Power: 1
      
      
      Gaspode 1 Reply Last reply Reply Quote 0
      • Gaspode
        Gaspode @Gaspode last edited by

        Ich antworte mir mal selbst.
        Nachdem ich gestern schon eine Weile nach einer Lösung gesucht hatte, ist mir jetzt klar geworden, was man tun muss.
        Nach dem Erstellen des Sockets muss einfach explizit eine Timeout Funktion angegeben werden. Zweckmäßigerweise kann man einfach destroy des Socket selbst angeben, also:

                var client = new net.Socket();
                client.setTimeout(5000, () => client.destroy());
        
        1 Reply Last reply Reply Quote 0
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate

        793
        Online

        31.8k
        Users

        80.0k
        Topics

        1.3m
        Posts

        1
        2
        103
        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