問題タブ [sendasync]

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 に答える
203 参照

java - 非同期httpclient Java 11で複数の非同期getリクエストのレスポンスを単一のファイルに書き込む方法は?

このようにJava 11でhttpclientを使用して単一のメディアファイルをダウンロードできます

上記のコード スニペットは、URL から .ts ファイルをダウンロードします。そして、正常にダウンロードされます。

今、私はURLのリストを持っていますList<URI> urls. URL のリストに対して非同期呼び出しを行い、Executor service. 私が立ち往生している場所は、応答のリストを単一のファイルに書き込む方法です。

これまでに書いたコード:

実行の最後に作成されたファイルsample.tsには、行われた要求の応答がありません。私の問題の要点がわかれば、この問題の代替ソリューションを提案できる人はいますか?

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

.net - System.Net.WebSockets.SendAsync と同期して送信する

私は皆、マルチスレッド化と非同期タスクに賛成ですが、制御を手放すことは私の好みではありません。

私は、1 つのプロセスが websocket を介して複数のターゲットと通信しているプロジェクトに取り組んでおり、送信は明らかに可能な限り高速である必要がありますが、互いに同期する必要があります。ビデオストリームを複数のデバイスに同時にストリーミングすることを考えてみてください。したがって、最初のフレームがターゲットによって受信される前に、次のフレームを送信し続けたくありません。

.net WebSockets を使用する場合、HttpListner と Kestrel 実装の両方でこれを試しました (多かれ少なかれ同じだと思います)。socket.SendAsync はデータを受信し、送信する前にローカルでバッファリングしているようです。実際に送信される前に TaskCompleted 。これは、送信タスクが基本的に即座に完了することを意味します。

もちろん、パケット全体が受信されたときに受信者が ACK を送信する ACK スキーマを実装することもできますが、それ自体がプロセスを遅くすることになります。キューに入れられたパッケージを継続的に送信しようとするためです。

これは基本的に、2048b のチャンクでデータを送信するコードです。

ここでの await は実際には送信が完了するのを待つと思いますが、そうではありませんが、タスクの完了を待っているようです。

受信者側では、前後にデバッグ応答を使用してデータを処理しています。

送信者側のログには次のように表示されます。

  • スレッド 28 は送信スレッドであり、信じられないほど高速に完了します。6198 バイトを送信する必要があり、これを 4 回の送信でチャンクします。最初のパケットがサーバーを離れる前に、すべてが完了していることは明らかです。
  • 残りのスレッドは、デバッグ応答の非同期受信者です。
  • (サイズの違いはデータの暗号化によるものです)

さて、この WebSocket 実装に関する私の理解はすべて間違っていますか? データ送信完了時にコールバック/イベントなどを行うことはできませんか? これを別の方法で達成できますか?これを真に同期的に実行することは解決策ですが、それを強制することはできないようです。

ガーッ!!

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

c# - C# HttpClient.SendAsync でエラーが発生し、この動詞タイプのコンテンツ本文を送信できません

この verb-type で content-body を送信できないというエラーが表示されます。C# VSTO デスクトップ アプリケーションから GET エンドポイントを呼び出しています。私は何を間違っていますか。

エンドポイントは次のようになります。