2017-05-05 3 views
1

Node.js Unixソケットが立ち上がっていません。 Node.jsコードは、サーバーとして動作するCアプリを生成します。 Node.jsコードからサーバーに接続しようとすると、サーバーが準備ができていない可能性があります。そのため、エラーが発生します。私はそれを素朴にキャッチしようとしますが、うまくいきません。ここでは、コードの簡易版です:サーバがまだ利用できないときにNode.js Unixソケットクライアントを作成する方法

var net = require('net'); 

const URI_SOCK = '/opt/tmp/.socket'; 

try { 
    const socket = net.connect(URI_SOCK, function() { 
    //'connect' listener 
    console.log('Connected to socket!'); 
    socket.write("42"); 
    }); 
} catch(err) { 
    console.log("Caught you!"); 
} 

は、ここで私はそれを実行しようとすると何が起こるかです:

✘ ⚡ ⚙ [email protected]  ~  node test.js 

events.js:72 
     throw er; // Unhandled 'error' event 
      ^
Error: connect ECONNREFUSED 
    at errnoException (net.js:901:11) 
    at Object.afterConnect [as oncomplete] (net.js:892:19) 

そのエラーをキャッチするか、私はプログラムを強制することができるもの、そうする方法については任意のアイデアは、サーバーがクライアントを受信する準備が整うまで待機しますか?

+0

あなたはループが(サーバーが何らかの理由で開始できませんでした場合は、あきらめる前に)しばらくの間接続しようとすることができます – Joe

答えて

1

これまでに数回答えられましたが、基本的にクライアントが発行する「エラー」イベントを聴く必要があります。ような何か:

socket.on('error', function(err) { 
    console.log("Error: " + err); 
}); 
+0

いやはや!私の非模範的なコードでは、私はこのイベントリスナーを持っていますが、その内部で別の 'connect'呼び出しを試しています。その欠陥のあるロジックは再加工が必要です。ありがとう! – Coop

関連する問題