これは、内部で/ OSレベルで(主にUnix実装で/ソケットAPIの観点から)どの程度正確に機能しますか?
クラスタモジュールのドキュメントには次のように書かれています:
「マスタープロセスはポートをリッスンし、新しい接続を受け入れて、ラウンドロビン方式でワーカー全体に分散します」
これは、マスタープロセスだけが着信接続でaccept()を処理/呼び出し、返されたソケット記述子をIPCメカニズム(Unixドメインソケット?)を介して事前にフォークされた子プロセスに渡すことを意味します。そのプロセスに)多重化メカニズム(例:epollインスタンス)?
Node.jsの内部動作をよりよく理解しようとしていますが、このレベルで決定的な情報をたくさん見つけることができません。どんな助けでも大歓迎です。
ありがとう
承認された回答:
child.send()
を参照してください nodejschild_processモジュール内。一言で言えば、あなたは次のことを行います:
child.send('socket', socket);
'socket'
の場所 は特別なメッセージ名であり、nodejsソケットオブジェクトへの参照を送信します。次に、Nodejsは、実際のOSソケットハンドルを子プロセスに送信し、新しいnodejsソケットオブジェクトをもう一方の端に接続するために、child_processモジュールの内部で処理します。
そして、このトピックに関する記事への参照があります:Node.JSのフォークされたプロセスへのソケットの送信。