2016-03-31 8 views
0

Ich versuche, Daten von Arduino-Server mit Node.js "net" -Modul zu lesen. Eigentlich geht alles super, außer Fehlerbehandlung.Node.js. Ereignis: 'Fehler' wird nicht ausgelöst

Das Problem liegt im "Fehler" -Ereignis. Es wird überhaupt nicht gefeuert. Ich habe gerade den Server ausgeschaltet und das "Daten" -Ereignis gestoppt, aber das "Fehler" -Ereignis wurde nicht ausgelöst.

Hier ist das einfachste Beispiel.

var net = require('net'); 

var socket = new net.Socket(); 
var config = { 
    port: 5003, 
    host: '192.168.1.66' 
}; 

function connect() { 
    socket.connect(config, function() { 
    console.log('Connected to: ' + socket.remoteAddress + ':' + socket.remotePort); 
    }); 
} 

// This event is working. 
socket.on('data', function() { 
    console.log('Data...'); 
}); 

// This is never fired. 
socket.on('error', function() { 
    console.log('Error...'); 
}); 

connect(); 

Irgendwelche Ideen wo ist das Problem?

+0

Wird ein Fehler angezeigt? Es wird nur bei einem Fehler ausgelöst. – jmugz3

Antwort

0

Der Arduino-Server schließt die Verbindung wahrscheinlich ordnungsgemäß (ohne einen Fehler), wenn er heruntergefahren wird. Hören Sie auf ‚Schließen‘ Veranstaltung:

socket.on('close', function (had_error) { 
    console.log('Connection closed with' + (had_error ? '' : 'out') + ' error.'); 
}); 

Wenn das nicht versuchen, funktioniert das 'timeout' Ereignis.

+0

Ich habe gerade das 'close' Event versucht und es wurde nicht gefeuert. 'timeout' Ereignis wurde ausgelöst, aber es wird auch ausgelöst, wenn keine Daten vom Arduino vorhanden sind. Ich habe Timeout auf 3 Sekunden eingestellt und alle 3 Sekunden kommen Daten vom Arduino. Als Ergebnis bekomme ich Timeout mit Daten ... –

+0

@DmyDanylevskyi Ich bin überrascht zu erfahren, dass das nahe Ereignis nicht feuert. Wenn Sie das Timeout länger als die Datenverzögerung (z. B. 10 Sekunden) festlegen, können Sie feststellen, dass die Daten nicht mehr ausgelöst werden. – Paulpro

+0

danke, aber ich bin mir nicht sicher, ob es eine gute Idee ist. Weil ich die Verzögerung zwischen Datenaktualisierung nicht kenne ... –

Verwandte Themen