C# 如何从websocket sharp客户端向信号集线器发送文件?

C# 如何从websocket sharp客户端向信号集线器发送文件?,c#,xamarin,signalr,websocket-sharp,C#,Xamarin,Signalr,Websocket Sharp,我们在其中一个应用程序中使用了websocket sharp,该应用程序与服务器上的信号集线器建立了websocket连接,我们能够发送文本消息并接收相同的响应,但无法发布字节[] 向服务器发送文本的代码如下: public void TestGroupData(string groupname) { DataCarrier dataCarrier = new DataCarrier() { H = "BILHub", M = "GetAllGro

我们在其中一个应用程序中使用了websocket sharp,该应用程序与服务器上的信号集线器建立了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;
    }
}
有什么帮助吗?如何在
\u ws.sendAsync()
中设置集线器名称?

并不是Signal的真正用途

SignalR适用于服务器和客户端之间的实时消息传递,适用于较小的消息(因为消息大小有一个限制)


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

正如@bsoulier所建议的,使用信号器发送实时消息示例您的mp3已准备好下载,一旦收到apiI发送的消息,请下载mp3。为什么要使用websocket sharp而不是Signal客户端?我们的客户端应用程序是使用xamarin开发的,Signal客户端不支持websocket到mono平台,这使得我们使用websocket sharb@xleonXamarin支持SSE作为传输协议,并且工作得非常好。除非您出于特定原因需要WebSocket。我也很好奇你是如何用WS连接到信号机的。我认为那是不可能的。与使用WebSocket连接相比,任何使用AJAX进行双向通信的docs?SSE链接的往返延迟和客户端->服务器带宽都要高得多。我基于此处提供的详细信息建立了我的逻辑:@xleonIt如果您从外部资源添加更多详细信息将非常好。我也这么认为,但上面的代码太多了,如何使用ASPNET对文件进行分块/合并的示例很容易在谷歌上找到。我们已经有了一个解决方案,使用webapi和大文件的多部分数据上载,SignalR Client不支持xamarin(mono)上的websocket,这是我们在mono客户端上使用的,websocket sharp中有一种发送文件的方法,
ws.SendAsync(data,completed)
,我如何在我的集线器上使用此方法是我们正在寻找的。有“Hello Word”吗这是一篇来自CodeProject的文章,但是你可以通过四处看看找到其他的例子。