2016-05-10 9 views
0

main.js第二引数process.sendとメッセージを発する

let child = require('child_process').fork('./child.js'); 

child.on('message', function() { 
    console.log('message', arguments) 
}); 

child.js

process.send({ ... }); 

ハンドラは二つの引数で呼び出されたことが表示されます:

{'0':{...}、 '1':未定義}

私は引数の長さをmessageリスナーに入れていますので、引数の正確な数が重要です。

第2引数(undefined)とは何ですか?それはNode.jsのすべてのバージョンに無条件にありますか?

+1

https://nodejs.org/api/child_process.html#child_process_event_message – robertklep

+0

@robertklep - それは答えです。あなたはそれを投稿するべきです。 – jfriend00

答えて

1

fine manual状態:

イベント: 'メッセージ' message<Object>解析されたJSONオブジェクトまたはプリミティブ値•

sendHandle<Handle>a net.Socketまたはnet.Serverオブジェクト、または未定義です。

あなたが同じページ上sendHandleを検索する場合は、具体的には、hereを終わる:

child.send()に渡すことができるオプションのsendHandle引数は、TCPサーバーまたはソケットオブジェクトを渡すためのものです子プロセスに送信します。子は、process.on('message')イベントに登録されたコールバック関数に渡された2番目の引数としてオブジェクトを受け取ります。

しかし、あなたの状況では、子からサーバーへの別の方向にメッセージを送信しています。この場合、ハンドルを送信することは意味がありません。したがって、私の推測では、第2引数は常にとなるでしょう。その場合はundefinedになります(しかしまだ存在します)。

+0

RTMing、ありがとう、私はこれを逃したと信じることはできません。 – estus

関連する問題