2015-04-01 54 views
0

长话短说,我正在尝试使用ASP.NET MVC和EventHubs显示实时数据。在ASP.NET MVC中实时显示数据的优化

我在我的控制器中有一个异步方法,它不断地从集线器接收消息并将它们放入一个类变量中。另一方面,视图使用JS来检索这个值,并将此值转换为div标签,以便我的基于JS的图表可以检索此值来读取此div的innerHTML值。

我觉得这是不是真的一个工作的好办法,而且感觉像制度,有时不稳定,请看看我为更好地理解代码:

感兴趣方法发现我的控制器:

public async static void updateList() 
    { 
     do 
     { 
      try 
      { 
       var message = await consumer.ReceiveAsync(); 
       if (message != null) 
       { 
        //alot of code to receive my needed double 
       } 
      } 
      catch (Exception exception) 
      { 
       Console.WriteLine("exception on receive {0}", exception.Message); 
      } 

     } while (true); 
    } 

public async Task<ActionResult> RefreshLatest() 
     { 
      //code to pass the needed double into a view 
      return PartialView("Latest", latest); 

     } 

然后是视图,由RefreshLatest方法生成:

@model double 

<div id="templivedata" style="display:none;">@Model</div> 

并且在另一装载视图图形的JS一部分抓住此值:

setInterval(function() { 
     try { 
      line1.append(new Date().getTime(), document.getElementById('templivedata').innerHTML); 

     } 
     catch (err) { 
      console.log("Stream not started"); 
     } 
    }, 200); 

最后但并非最不重要的,这会触发RefreshLatest方法在我的索引视图的代码:

<script type="text/javascript"> 

$(function() { 
    setInterval(function() { 
     $('#latest').load('/Stream/RefreshLatest'); 
    }, 200); 
}); 
</script> 

所以我的代码实际上工作,我只是想知道是否有另一种方式来做到这一点。

+0

你看过SignalR吗? http://signalr.net/ – Donal 2015-04-01 14:01:16

回答