我们在我们的一个应用程序中使用websocket-sharp,它与服务器上的SignalR集线器建立websocket连接,我们能够发送文本消息并接收相同的响应,但不能发布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;
}
}对此有什么帮助吗?如何在_ws.sendAsync()中设置集线器名称
发布于 2016-09-19 11:26:03
发送大文件并不是真正意义上的SignalR。
SignalR很适合在服务器和客户端之间使用实时消息传递,用于较小的消息(因为messahe大小有对业绩的实际影响)。
为了满足这种需要,我将研究ASP.NET Web,特别是使用分块上传 (将文件分割成多个片段以避免连接中断)。
https://stackoverflow.com/questions/39569519
复制相似问题