我正在开发一个Web应用程序,我有一些图表,我希望始终从数据库中获取图表的数据,以便用户始终拥有最新的数据图片。我使用signalR并在Report页面的页面加载中调用hub类中的服务器方法,该方法从数据库获取图表数据并将其传递到客户端,然后客户端的处理程序处理数据并绘制图表。我想要的是不断获取数据。我有什么选择呢?
在一分钟的修复间隔之后继续调用hub方法的最佳方法是什么?
答案 0 :(得分:5)
我不会在客户端或服务器上进行轮询。而是使用服务总线并在发生时在该总线上发布更改。
然后,您可以使用SignalR将这些事件转发给客户端。我已经建立了一个名为SignalR.EventAggregatorProxy
的库https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki
我在这里写了一篇关于它的博客文章 http://andersmalmgren.com/2014/05/27/client-server-event-aggregation-with-signalr/
或者在这里观看现场演示 http://malmgrens.org/signalr/
答案 1 :(得分:4)
SignalR使服务器的轮询过时。您要做的是安排数据库访问。如果要每分钟更新一次图表,请在服务器应用程序中创建一个计时器作业,从中收集数据库中的数据,该数据已在最后一分钟内添加。然后将此数据发送给您的客户。通过这种方式,您连接的客户端始终是最新的,无需轮询服务器。