2016-08-26 19 views
1

一部のサーバー(C++で書かれている)用のREST API機能を構築しましたが、いくつかの技術的な制限のためにNodeJsC++boost::asioライブラリを使用しました。動作原理は、HTTPリクエストを待っている。基本的NodeJsとboost :: asioの組み合わせを使用した非同期サーバー

enter image description here

NodeJs下の画像に表示されます。 NodeJsが要求を受け取ると、単純な文字列を作成し、net.connect()で新しいソケット接続を開き、メインのC++サーバーに送信します。 C++サーバはその文字列を取得し、何らかの仕事をしてソケット経由で応答文字列を返します。そして、最後にNodeJsがC++サーバからの応答を得てからそれからHTTPレスポンスを作成し、クライアントに返信します。その後、ソケットを閉じるためにnet.destroy()が呼び出されます。

したがってNodeJsモジュールは外部世界のクライアント用のサーバーですが、C++サーバーのクライアントでもあります。つまり、NodeJsはプロキシサーバーのようなものです。

現在、私はboost::asioの同期モデルを使用していますが、すべてがうまく動作しますが、サーバは同時に1つの要求を処理します。しかし、今では、複数のリクエストを同時にサポートするために、非同期モデルに切り替える必要があります。したがって、boost::asioの非同期モデル(async_acceptasync_readasync_writeなど)に切り替えると、実際のクライアントが1つの場合(つまりNodeJs)、C++サーバーで複数のリクエストを同時に処理できるようになりますか?

私はかなり新しいNodeJsJavascriptです。あなたの時間をありがとう!

答えて

0

私は手を汚して、boost::asioの非同期モデルに切り替えることにしました。

すべて正常に動作し、C++サーバーは複数の要求を同時に処理します。

関連する問題