SignalR客户端未异步处理收到的数据

时间:2019-03-04 23:58:11

标签: .net asp.net-web-api signalr-hub signalr.client signalr-2

我的问题如下: 我有具有基本SignalR功能的ASP.NET WEB API服务器(非核心)。

基本上在连接客户端后,我会向客户端返回多组数据

在我的DataHub.cs

public class DataHub : Hub
{
    public override Task OnConnected()
    {
        Init(Context.ConnectionId);
        return base.OnConnected();
    }
    private async void Init(string clientId)
    {
        //takes about 90 seconds which is inacceptable for loading data into my application
        await CustomClass.VeryLongTaskAsync();
    }
}

在我的CustomClass.cs

public class CustomClass
{
    private IHubContext _context = GlobalHost.ConnectionManager.GetHubContext<DataHub>();
    public async Task VeryLongTaskAsync()
    {
        for (int i = 0; i<90; i++)
        {
            SendData(new Image(){
                Count = i
            });
            Thread.Sleep(1000);
        }
    }
    private async Task SendData(Image image)
    {
        await _context.Clients.Client(_clientID).sendData(image);
    }
}

我的客户使用以下代码

public constructor()
{
    var _connection = new HubConnection(ServerURI, false);
    var _hubProxy = _connection.CreateHubProxy("DataHub");
    _hubProxy.On<Image>("sendData", (image) =>
    {
        //Process Data
    });
    try
    {
        await _connection.Start();
    }
}

现在的问题是客户端正在等待服务器端功能完成,然后客户端才开始处理数据。

理想情况下,客户端将在收到数据后立即开始处理数据。是的,服务器正在异步发送它。我通过断点确认了。

这有可能吗?

谢谢

0 个答案:

没有答案