6

SignalRクライアントからサーバーへ(またはクライアントからサーバーへ、またはサーバーからクライアントへ)バイトのチャンクを転送すると、多くのメッセージが失われます。

ファイルをストリームに読み込み、ハブまたは永続的な接続を介して他のクライアントに送信しました。これは非常に高速に実行されますが、メッセージがドロップまたは失われることが常にあります。

メッセージを失うことなく、クライアントからクライアントに大きなファイル(チャンクであるかどうかに関係なく)を転送するにはどうすればよいですか?

4

3 に答える 3

6

@dfowlerが指摘しているように、それはその仕事に適したテクノロジーではありません。私がお勧めするのは、リンクを含むダウンロードするファイルがあるというメッセージを送信することです。その後、静的ファイルまたはASP.NET WebAPIで記述されたWebサービスに対して、標準のGET要求を使用してそのファイルをダウンロードできます。

于 2012-10-10T18:10:43.683 に答える
4

SignalRはファイル転送用ではなく、メッセージ送信用です。

于 2012-10-10T18:00:01.727 に答える
4

なぜそれは適切な技術ではないのですか?クライアントがsignalRハブにデータを送信する必要がある場合は、追加のものを必要とせずに、signalR接続を介して送信できる必要があります。

実際、少なくとも私にとっては、バイト配列を送信するときに正常に機能しますが、チャンクを転送するときに同様の問題が発生しました。

おそらく、チャンクを送信する順序が受信される順序と同じであるかどうかを確認するために、いくつかのテストを実行できます。

アップデート

私は自分でテストを行いましたが、私の場合、順序は確かに問題でした。チャンクを受け取るハブメソッドを変更して、最後にバイト配列を再構築するために使用する順序パラメーターを受け入れます。これは正常に機能します。しかし、これを言っても、これは大きなファイル転送ではうまく機能しないことを理解しました。

私の場合、大量のデータを転送する必要はありません。UIに進行状況を表示し、データをチャンクで送信する必要があります。

于 2013-04-30T19:06:31.973 に答える