我的问题如下:我的 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();
}
}
现在的问题是客户端一直在等待服务器端功能完成,然后才开始处理数据。
理想情况下,客户端会在收到数据后立即开始处理数据。是的,服务器正在异步发送它。我通过断点确认了它。
这甚至可能吗?
谢谢