2016-09-19 5 views
1

私たちは、サーバー上のSignalR HubとのWebSocket接続を確立するアプリケーションの1つでwebsocket-sharpを使用していますが、テキストメッセージを送信して同じメッセージを送信できますが、byte[]は投稿できません。サーバーにテキストを送信するためのSignalRハブにファイルを送信する方法websocket-sharp Clientから?

コードはこれです:私たちは以下のコードを使用してbyte[]を送信しようとすると

public void TestGroupData(string groupname) 
{ 
    DataCarrier dataCarrier = new DataCarrier() 
    { 
     H = "BILHub", 
     M = "GetAllGroupsFor", 
     A = new string[] { groupname } 
    }; 
    string wsPacket = JsonConvert.SerializeObject(payLoad); 
    this._ws.Send(wsPacket); 
    //this.MakeServerCall(dataCarrier); 
} 

、そのスルーつもりはない:

public void TestFileData() 
{ 
    try 
    { 
     // Read the file data 
     Console.WriteLine("Started reading file"); 
     string fileName = @"C:\Saurabh\Data\Song.mp3"; 
     byte[] file = File.ReadAllBytes(fileName); 
     DataCarrier dataCarrier = new DataCarrier() 
     { 
      H = "BILHub", 
      M = "SendFile", 
      A = new object[] { file } 
     }; 
     string wsPacket = JsonConvert.SerializeObject(dataCarrier); 
     this._ws.SendAsync(file , OnSendComplete); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex); 
     //throw; 
    } 
} 

これで任意のヘルプ? _ws.sendAsync()にハブ名を設定するにはどうすればよいですか?

+0

については

@bsoulierによって示唆されるように、使用signalR *あなたのmp3はダウンロードの準備ができていて、api * – Eldho

+0

からメッセージがダウンロードされたら、私は好奇心が強いです。なぜSignalRクライアントではなく、WebSocket-sharpを使用しますか? – xleon

+0

私たちのクライアントアプリケーションはxamarinを使って開発されており、signalrクライアントはwebsocket-monplatfromをサポートしていないので、websocket-sharbを使用することができました。 @xleon –

答えて

5

Sending big filesは本当にSignalRのためのものではありません。

SignalRはかなり小さいサイズのメッセージ(messaheサイズはreal impact on performanceを持っているとして)用のサーバー間目的&クライアントを、メッセージングリアルタイムに適しています。リアルタイムのメッセージの例を送信するために、私は特に(接続の中断を避けるために、複数の部分で分割ファイル)chunked uploadを使用して、ASP.NETのWeb APIになり、そのような必要性

+0

外部リソースから詳細を追加するとうれしいです – Eldho

+0

私は同じと思っていましたが、あまりにも多くのコードがあります。 ASPNETを使用してファイルをチャンク/マージする方法はGoogleにとって簡単です。 – bsoulier

+0

大きなファイルに対してwebapiとmultipartデータアップロードを使用したソリューションがすでに用意されていますが、SignalR Clientは[websocket-sharp](https://github.com/sta)を使用しているxamarin(mono)/websocket-sharp)私たちのモノクライアントには、ファイルを送信するためのwebsocket-sharpメソッドがあります。 'ws.SendAsync(data、completed)'、私のハブでこのメソッドを使う方法は? 。 –

関連する問題