これは基本/オペレーティングシステムレベル(主にUnix実装/ソケットAPIの観点から)でどのように機能しますか?
クラスタモジュールのマニュアルには次のように記載されています。
「メインプロセスはポートでリッスンし、新しい接続を受け入れ、ラウンドロビン方式でワーカーに配布します。」
これは、メインプロセスが着信接続でaccept()を個別に処理/呼び出してから、返されたソケット記述子を一部のIPCメカニズム(Unixドメインソケット?)を介して事前に分岐されたサブプロセスに渡すことを意味しますか?プロセス)多重化メカニズム(例:epollインスタンス)?
Node.jsの内部動作をよりよく理解しようとしていますが、このレベルでは明確な情報を見つけることができません。どんな助けでも大変感謝します。
ありがとう
答え1
バラよりchild.send()
nodejs child_processモジュールから。つまり、次のことを行います。
child.send('socket', socket);
どこに'socket'
特別なメッセージ名があり、nodejsソケットオブジェクトへの参照を送信します。その後、Nodejsはchild_processモジュールの下位レベルのエントリを処理し、実際のオペレーティングシステムのソケットハンドルを子プロセスに送信し、新しいNodejsソケットオブジェクトをもう一方の端に接続します。
そして以下は、そのトピックに関する記事の引用です。Node.JSのフォークされたプロセスにソケットを送信する。