如何从websocket-sharp客户端发送文件到SignalR集线器?

时间:2016-09-19 09:18:58

标签: c# xamarin signalr websocket-sharp

我们在我们的一个应用程序中使用websocket-sharp,它与服务器上的SignalR Hub建立websocket连接,我们能够发送文本消息并接收相同的响应,但无法发布{{ 1}}。

向服务器发送文本的代码是:

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); } 时,它不会通过:

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; } } 中设置我的集线器名称?

1 个答案:

答案 0 :(得分:5)

Sending big files并不是SignalR的意思。

SignalR适用于服务器和服务器之间的实时消息传递目的。客户端,用于相当小的消息(因为消息大小有real impact on performance)。

对于这种需求,我会研究ASP.NET Web API,特别是使用chunked upload(将文件分成多个部分以避免连接中断)