2016-03-31 18 views
0

ArduinoサーバーからNode.js "net"モジュールを使用してデータを読み取ろうとしています。実際には、エラー処理を除いてすべてがうまくいっています。Node.jsイベント: 'エラー'が発生しません。

問題は「エラー」イベントです。それはまったく解雇されません。サーバーの電源を切って「データ」イベントが停止しましたが、「エラー」イベントは発生しませんでした。

ここでは最も簡単な例を示します。

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

問題はどこですか?

+0

エラーが表示されますか?それは間違いで解雇されるだけです。 – jmugz3

答えて

0

Arduinoサーバーは、シャットダウン時に(エラーなしに)接続を正常に終了する可能性があります。それは'timeout'イベントをしようと動作しない場合

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

:「閉じる」イベントに耳を傾けます。

+0

ちょうど 'close'イベントを試みましたが、起動されませんでした。 'timeout'イベントが発生しましたが、Arduinoからのデータがない場合にも発生します。私はタイムアウトを3秒に設定し、データはArduinoから3秒ごとに送信されます。その結果、私はタイムアウトのデータを取得しています... –

+0

@DmytroDanylevskyi私はクローズイベントが発砲していないことを知って驚いています。タイムアウトをデータ遅延(10秒など)より長く設定すると、データが停止したことを検出できます。 – Paulpro

+0

ありがとうございますが、私はそれが良いアイデアだとは確信していません。私はデータ更新の間の遅延を知らないので... –

関連する問題