2012-10-10 21 views
6

SignalRは、サーバーからクライアントへ(またはクライアントからサーバーへ、またはサーバーからクライアントへ)バイトのチャンクを転送すると、多くのメッセージを失います。バイトをクライアントに転送するにはどうすればよいですか?

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

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

答えて

5

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

4

SignalRはファイル転送用ではなく、メッセージを送信するためのものです。

4

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

実際には、バイト配列を送信するときにうまく動作しますが、少なくともチャンクを転送するときに同様の問題が発生しました。

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

UPDATE

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

私の場合、非常に大量のデータを転送する必要はありません。私はUIに進行状況を伝えたいだけで、データをチャンクで送信する必要がありました。

+0

サンプルコードはありますか?どのようにチャンクを取得していますか?ありがとう – user1331889

関連する問題