11

node.jsサーバーと他のファイルおよびHTMLファイルで構成されるアプリケーションがあります。HTMLファイルは私のクライアントであり、node.jsサーバーと通信する必要があります。node.jsサーバーは、他のnode.jsファイルで作成されたオブジェクトを使用して、イーサネットケーブルを使用してPLCと通信します。そこで、サーバーとクライアントの間にsocket.io接続を作成し、サーバーとPLCの間にtcp接続を作成しました。

エラー:すべてのケーブルを接続した状態でサーバーとクライアントを起動すると、PLCから正しい答えが得られます。実行中にケーブルを外すと、次のエラーが発生します。

events.js:71
        throw arguments[1]; // Unhandled 'error' event
                       ^
Error: write EPIPE
    at errnoException (net.js:770:11)
    at Socket._write (net.js:552:19)
    at Socket.write (net.js:511:15)
    at Timer.<anonymous> (C:\Users\Massimo\workspace\Scada\plc_driver\fw_driver.
js:289:20)
    at Timer.exports.setInterval.timer.ontimeout (timers.js:234:14)

私はすでにコードでサーバーのエラーを管理しようとしました

communication_socket.on('error', function () {
    console.log('Error!');
});

ノード0.8.18を実行していて、すべてのパッケージが更新されています(npm update -gを作成しました)

コードの結果を編集する

process.on('uncaughtException', function(err) {
    console.log(util.inspect(err));
});

は:

{ [Error: write EPIPE] code: 'EPIPE', errno: 'EPIPE', syscall: 'write' }

なにか提案を?

4

2 に答える 2

10

ソケット IO エラーは、試行/キャッチできる方法でスローされません。on('error', [callback])各ソケットにハンドラーを追加する必要があります。これに関するいくつかの関連する議論は、stream.pipe 転送エラーをすべきですか?で読むことができます。 タイムアウトがある理由と、タイムアウトがどのソケットに書き込んでいるかを言わないので、これ以上お手伝いできません。

于 2013-05-12T04:23:30.187 に答える
-1

Metor でデプロイ コマンドが失敗した後に、このエラーが発生しました。アプリをデバッグ モードで実行し、関数のブレークポイントをクリックしてから、デプロイ スクリプトを再度実行することで修正できました。これが誰かに役立つことを願っています。

于 2015-02-06T21:04:21.230 に答える