問題タブ [beast-websockets]

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.

0 投票する
1 に答える
1869 参照

ubuntu - CMake から Boost 1.66 および 1.67 で Beast にアクセスする方法

Beast で CMake プロジェクトを作成しようとしています。ソースから適切にインストールされて/usr/local/include/boostいますが、CMake でそれを見つけることができません。だったのかもしれないと思ったので3.10.2、疲れましたが、どちらもうまくいきませんでした。誰も何をすべきか知っていますか?3.11.43.12.0-rc1

環境: WSL で Ubuntu 18.04LTS を使用する Windows CLion 2018.1.5。

CMake を実行しようとすると、次のエラーが発生します。

0 投票する
1 に答える
828 参照

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() のようなものを使用して、ステートマシンを進めるファンクターをキューに入れる方がよいでしょうか?

0 投票する
2 に答える
92 参照

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()と私の質問を確認してください。アドバイスや回答をいただければ幸いです。