【发布时间】:2017-06-20 15:22:46
【问题描述】:
我有一个 SignalR 服务器,它向连接到它的所有客户端发送某些消息。我在 UWP 中创建了两个示例客户端,另一个是 C# 中的简单控制台应用程序。一旦从 SignalR 调用客户端的方法,我只需记录一条消息。
戏剧性地,控制台应用程序在服务器发送后立即记录数据,但 UWP 应用程序在其中添加了大约 6-30 秒的延迟。虽然它有时会频繁触发,但它能够重现问题 10 次中的 6 次。
以下是 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++);
}));
}
任何帮助将不胜感激。提前致谢。
【问题讨论】:
-
请提供代码,否则问题将被关闭。
-
你的UWP应用的测试环境是什么,能不能换个设备或者更新一下网络重新测试一下,看看有没有一样的结果?数据接收慢对你有什么不好的影响?您从服务器发送的数据又是什么?
-
在同一个测试环境下,console应用客户端马上显示数据,但是uwp客户端显示延迟