私の問題は次のとおりです。基本的な 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();
}
}
ここでの問題は、クライアントがサーバー側の機能が終了するまで待機し、その後で初めてデータの処理を開始することです。
理想的には、クライアントはデータを受信するとすぐに処理を開始します。はい、サーバーはそれを非同期で送信しています。ブレークポイントで確認しました。
これは可能ですか?
ありがとう