1

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

基本上在连接的客户端上,我将多组数据返回给客户端

在我的 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();
    }
}

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

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

这甚至可能吗?

谢谢

4

0 回答 0