2016-03-31 24 views
0

Arduino sunucusundaki verileri Node.js "net" modülü ile okumayı deniyorum. Aslında, hata işleme dışında her şey harika gidiyor.Node.js. Olay: 'Hata' tetiklenmiyor

Sorun "error" olayında. Hiç ateş etmedi. Sadece sunucuyu kapattım ve "data" olayı durdu, ancak "error" olayı kovulmadı.

İşte en basit örnek.

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(); 

Sorun olan herhangi bir fikir nerede?

+0

Hata görüyor musunuz? Sadece hatayla tetiklenir. – jmugz3

cevap

0

Arduino sunucusu, kapatıldığında bağlantıyı büyük olasılıkla (hatasız) kapatır. 'Yakın' etkinliğini dinleme:

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

o 'timeout' olayı deneyin işe yaramazsa.

+0

Sadece 'kapat' olayını denediniz ve işten kovulmadık. 'timeout' olayı tetiklendi, ancak Arduino'dan veri olmadığında da tetiklendi. Zaman aşımı 3 saniyeye ayarlıyorum ve her 3 saniyede bir Arduino'dan veri geliyor. Sonuç olarak, verilerle zaman aşımı yapıyorum ... –

+0

@DmytroDanylevskyi Yakın olayın ateş etmediğini görmek beni şaşırttı. Zaman aşımını, veri gecikmesinden (10 saniye gibi) daha uzun olarak ayarlarsanız, verilerin durduğunu tespit edebilirsiniz. – Paulpro

+0

teşekkürler, ama bunun iyi bir fikir olduğundan emin değilim. Çünkü veri yenileme arasındaki gecikmeyi bilmiyorum ... –

İlgili konular