問題タブ [boost-beast]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 未定義のシンボル boost::system:detail::system_category_instance
beastとasioを使用するプレイグラウンド プログラムをコンパイルするときに、macOS Mojave で clang を使用して C++17 標準でブーストをビルドしました。次のエラーが表示されます。
これは私のメイクファイルです:
このチュートリアルで説明されている手順でブーストをコンパイルしました: Compiling Boost with Clang。
Clang バージョン:
Apple LLVM バージョン 10.0.0.0 (clang-1000.11.45.5)
ターゲット: x86_64-apple-darwin18.2.0
他に考慮すべきことはありますか?プロジェクト自体で使用する必要があるのと同じ C++ 標準でブーストをコンパイルすることが提案されている多くの投稿などを読みました。
EDIT:
変数名(Boost_対BOOST_)を使用したMatthieu Brucherのヒントがうまくいきました。今、それは働いています。
boost - boost::beast でコールバック地獄を回避する方法は?
boost::beast/asio を使用したいアプリケーションに取り組んでいます。Websocket 接続を介してデータを受信し、同時に REST API に要求を発行する必要があります。
boost::beast websocket/HTTP 非同期クライアントの例では、完了ハンドラで次の非同期操作が開始されるようです。これは、node.js アプリケーションで見たのと同じ「コールバック地獄」を引き起こしているようです。
これを回避するために、アプリケーションで単純なステート マシンを使用して、次に開始する操作を決定することを考えています。アプリケーションで while ループを使用して、io_context で poll() を呼び出し、その後ステート マシン コードを実行することを考えています (例: switch(state) { ... state = nextState; } )。
ただし、これにより、メイン スレッドが常にステート マシンを実行している間に 100% の CPU を消費するビジー ループが作成される可能性があります。
私の推論は正しいですか? post() のようなものを使用して、ステートマシンを進めるファンクターをキューに入れる方がよいでしょうか?
c++ - コールバックなしでブースト関数を呼び出す
Websocket 接続に boost-beast ライブラリを使用しています。何が起こっているのかを理解するために、この例を参照できます。同じ例を使用しましたが、いくつかの点を変更しました。
on_handshake(beast::error_code ec)
を 3 つの関数A(beast::error_code ec)
に分割しB(beast::error_code ec)
、C(beast::error_code ec)
B()
はバイナリ データを送信し、A()
とC()
はテキストを送信しています。A()
コールB()
バックとしてB()
呼び出し、コールバックC()
として呼び出します。
今、私はこれをしたい時点で立ち往生しています:
読み取り関数は次のとおりです。
質問:-機能B()
と私の質問を確認してください。アドバイスや回答をいただければ幸いです。