2015-04-01 67 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

回答