如何发送文件到SignalR hub从websocket尖锐的客户端?

如何发送文件到SignalR hub从websocket尖锐的客户端?

问题描述:

我们在我们的应用程序中使用websocket-sharp,它在服务器上与我们的SignalR Hub建立websocket连接,我们能够发送文本消息并接收响应,但无法发布byte[]如何发送文件到SignalR hub从websocket尖锐的客户端?

代码发送短信到服务器是这样的:

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); 
} 

当我们尝试使用下面的代码来发送byte[],其不经历:

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下载mp3 * – Eldho

+0

我很好奇。为什么你会使用websocket-sharp而不是SignalR客户端? – xleon

+0

我们的客户端应用程序使用xamarin开发,信号客户端不支持websocket或单声道平台,这使我们使用websocket-sharb。 @xleon –

Sending big files是不是真的是什么SignalR的意思。

SignalR有利于实时消息服务器之间目的&客户,一个相当小尺寸的消息(如messahe大小有real impact on performance)。

对于这样一个需要我会去了解一下的ASP.NET Web API,尤其是通过使用chunked upload(分割文件多件,以避免连接中断)

+0

如果你从外部资源添加更多细节 – Eldho

+0

我会认为相同,但是那个代码太多了, Google如何使用ASPNET对文件进行块/合并很容易。 – bsoulier

+0

我们已经有了一个使用webapi和多部分数据上传的大文件的解决方案,SignalR Client不支持我们使用[websocket-sharp](https://github.com/sta)的xamarin(单声道)上的websocket。/websocket-sharp),在websocket-sharp中有一个用于发送文件的方法,'ws.SendAsync(data,completed)',我如何使用这个方法与我的集线器是我们正在寻找的。 –