SignalRサーバは、接続されているすべてのクライアントに特定のメッセージを送信します。 UWPで2つのサンプルクライアントを作成し、もう1つはC#で単純なコンソールアプリケーションを作成しました。私は、クライアントのメソッドがSignalRから呼び出されると、単にメッセージを記録します。SignalRはUWPで動作が遅く、コンソールアプリケーションでは高速に動作します。
劇的コンソールアプリケーションは、すぐにサーバーが送信されるデータを記録しますが、UWPアプリケーションは、それには約6-30秒の遅延が追加されます。それは時々頻繁にトリガーされますが、10回中6回問題を再現することができます。以下は
私は、コンソールアプリケーションでメッセージをログに記録しているsimilary、UWPクライアントのコードです。
async Task SetupSignalR()
{
var conn = new HubConnection(baseUrl);
Writer.Text += (string.Format("Creating hub proxy with :{0}\n", baseUrl));
var proxy = conn.CreateHubProxy("PumpStatusHub");
Writer.Text += "Starting Connection\n";
try
{
conn.Start().Wait();
Writer.Text += "Connection started\n";
proxy.Invoke("OpenPortReading").Wait();//, UserName, TextBoxMessage.Text);
Writer.Text += "Port invoked\n";
proxy.On<string>("ReadUdpData", OnMessage);
}
catch (HttpRequestException ex)
{
Writer.Text += "Unable to connect to server: Start server
before connecting clients.\n";
Writer.Text += ex.Message + "\n";
}
catch (Exception ex)
{
Writer.Text += ex.Message + "\n";
Task.Delay(3000).Wait();
SetupSignalR().Wait();
}
}
private void OnMessage(string obj)
{
Windows.ApplicationModel.Core.CoreApplication.MainView.
Dispatcher.RunAsync(CoreDispatcherPriority.High, (DispatchedHandler)(() =>
{
Writer.Text += string.Format("Message received: {0}\n"
, counter++);
}));
}
ご協力いただければ幸いです。 ありがとうございます。
コードを入力してください。そうでない場合は、質問は終了します。 – spender
UWPアプリケーションのテスト環境は何ですか?デバイスを変更したり、テスト用にネットワーク接続を更新したり、同じ結果が得られているかどうかを確認してください。データが遅い場合、あなたにとって悪影響は何ですか?そして、あなたが断る人から送るデータは何ですか? –
同じテスト環境では、コンソールアプリケーションクライアントはすぐにデータを表示しますが、uwpクライアントは遅延を表示します –