如何从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()中设置集线器名称?

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

发送大文件并不是SignalR的真正目的。

SignalR适用于服务器之间的实时消息目的。客户端,对于相当小的消息(因为消息大小对性能有实际影响)。

对于这样的需要,我会看看ASP。. NET Web API,特别是通过使用分块上传(将文件分成多个部分以避免连接中断)