如何从websocket-sharp客户端发送文件到SignalR集线器
本文关键字:文件 SignalR 集线器 websocket-sharp 客户端 | 更新日期: 2023-09-27 18:07:52
我们在一个应用程序中使用websocket-sharp,它与服务器上的SignalR Hub建立了一个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()
中设置集线器名称?
发送大文件并不是SignalR的真正目的。
SignalR适用于服务器之间的实时消息目的。客户端,对于相当小的消息(因为消息大小对性能有实际影响)。
对于这样的需要,我会看看ASP。. NET Web API,特别是通过使用分块上传(将文件分成多个部分以避免连接中断)