問題タブ [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.
java - 非同期httpclient Java 11で複数の非同期getリクエストのレスポンスを単一のファイルに書き込む方法は?
このようにJava 11でhttpclientを使用して単一のメディアファイルをダウンロードできます
上記のコード スニペットは、URL から .ts ファイルをダウンロードします。そして、正常にダウンロードされます。
今、私はURLのリストを持っていますList<URI> urls
. URL のリストに対して非同期呼び出しを行い、Executor service
. 私が立ち往生している場所は、応答のリストを単一のファイルに書き込む方法です。
これまでに書いたコード:
実行の最後に作成されたファイルsample.ts
には、行われた要求の応答がありません。私の問題の要点がわかれば、この問題の代替ソリューションを提案できる人はいますか?
.net - System.Net.WebSockets.SendAsync と同期して送信する
私は皆、マルチスレッド化と非同期タスクに賛成ですが、制御を手放すことは私の好みではありません。
私は、1 つのプロセスが websocket を介して複数のターゲットと通信しているプロジェクトに取り組んでおり、送信は明らかに可能な限り高速である必要がありますが、互いに同期する必要があります。ビデオストリームを複数のデバイスに同時にストリーミングすることを考えてみてください。したがって、最初のフレームがターゲットによって受信される前に、次のフレームを送信し続けたくありません。
.net WebSockets を使用する場合、HttpListner と Kestrel 実装の両方でこれを試しました (多かれ少なかれ同じだと思います)。socket.SendAsync はデータを受信し、送信する前にローカルでバッファリングしているようです。実際に送信される前に TaskCompleted 。これは、送信タスクが基本的に即座に完了することを意味します。
もちろん、パケット全体が受信されたときに受信者が ACK を送信する ACK スキーマを実装することもできますが、それ自体がプロセスを遅くすることになります。キューに入れられたパッケージを継続的に送信しようとするためです。
これは基本的に、2048b のチャンクでデータを送信するコードです。
ここでの await は実際には送信が完了するのを待つと思いますが、そうではありませんが、タスクの完了を待っているようです。
受信者側では、前後にデバッグ応答を使用してデータを処理しています。
送信者側のログには次のように表示されます。
- スレッド 28 は送信スレッドであり、信じられないほど高速に完了します。6198 バイトを送信する必要があり、これを 4 回の送信でチャンクします。最初のパケットがサーバーを離れる前に、すべてが完了していることは明らかです。
- 残りのスレッドは、デバッグ応答の非同期受信者です。
- (サイズの違いはデータの暗号化によるものです)
さて、この WebSocket 実装に関する私の理解はすべて間違っていますか? データ送信完了時にコールバック/イベントなどを行うことはできませんか? これを別の方法で達成できますか?これを真に同期的に実行することは解決策ですが、それを強制することはできないようです。
ガーッ!!
c# - C# HttpClient.SendAsync でエラーが発生し、この動詞タイプのコンテンツ本文を送信できません
この verb-type で content-body を送信できないというエラーが表示されます。C# VSTO デスクトップ アプリケーションから GET エンドポイントを呼び出しています。私は何を間違っていますか。
エンドポイントは次のようになります。