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