一部のサーバー(C++で書かれている)用のREST API機能を構築しましたが、いくつかの技術的な制限のためにNodeJs
とC++
boost::asio
ライブラリを使用しました。動作原理は、HTTPリクエストを待っている。基本的NodeJsとboost :: asioの組み合わせを使用した非同期サーバー
NodeJs
下の画像に表示されます。 NodeJs
が要求を受け取ると、単純な文字列を作成し、net.connect()
で新しいソケット接続を開き、メインのC++サーバーに送信します。 C++サーバはその文字列を取得し、何らかの仕事をしてソケット経由で応答文字列を返します。そして、最後にNodeJs
がC++サーバからの応答を得てからそれからHTTPレスポンスを作成し、クライアントに返信します。その後、ソケットを閉じるためにnet.destroy()
が呼び出されます。
したがってNodeJs
モジュールは外部世界のクライアント用のサーバーですが、C++サーバーのクライアントでもあります。つまり、NodeJs
はプロキシサーバーのようなものです。
現在、私はboost::asio
の同期モデルを使用していますが、すべてがうまく動作しますが、サーバは同時に1つの要求を処理します。しかし、今では、複数のリクエストを同時にサポートするために、非同期モデルに切り替える必要があります。したがって、boost::asio
の非同期モデル(async_accept
、async_read
、async_write
など)に切り替えると、実際のクライアントが1つの場合(つまりNodeJs
)、C++サーバーで複数のリクエストを同時に処理できるようになりますか?
私はかなり新しいNodeJs
とJavascript
です。あなたの時間をありがとう!