nodejs.org Web サイトで説明されているように、接続ごとにスレッドを生成する代わりに (スレッドごとに 2 MB のオーバーヘッド!)、サーバーは select()、epoll、kqueue、または /dev/poll を使用して、ソケットの読み取り/書き込みの準備が整うまで待機します。 . ノードが接続ごとのスレッドのスポーンを回避できるようにするのはこのメソッドであり、オーバーヘッドは接続のソケット記述子のヒープ割り当てに関連するものです。この実装の詳細は開発者にはほとんど隠されています。ランタイムによって公開される net.socket API は、ユーザーが何も考えずにその機能を利用するために必要なすべてを提供します。
Node は、events.EventEmitter を通じて独自のイベント API も公開します。多くのノード オブジェクトは、非同期 (非ブロッキング) イベント通知を提供するイベントを実装します。これは、PHP などの他の言語ではデフォルトで同期 (ブロッキング) である I/O 操作に最適です。ノード net.socket API の場合、ソケット I/O を処理するいくつかの API メソッドに対してイベントがトリガーされ、イベントが発生すると、これらのメソッドにパラメーターによって渡されるコールバックがトリガーされます。イベントには、さまざまな方法でコールバック関数をバインドできます。コールバック関数をパラメーターとして受け入れることは、開発者にとって便利なだけです。
最後に、OS イベントと nodejs イベントを混同しないでください。net API の場合、OS イベントは nodejs ランタイムに渡されますが、nodejs イベントは javascript です。
これが役立つことを願っています。