欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.Net MVC實現(xiàn)長輪詢

 更新時間:2017年06月13日 15:57:27   作者:徐小閂  
這篇文章主要為大家詳細(xì)介紹了.Net MVC實現(xiàn)長輪詢的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

什么是長輪詢?

    長輪詢是“服務(wù)器推”技術(shù)實現(xiàn)方式的一種,可以將服務(wù)端發(fā)生的變化實時傳送到客戶端而無須客戶端頻繁的地刷新、發(fā)送請求。

長輪詢原理?

    客戶端向服務(wù)器發(fā)送Ajax請求,服務(wù)器接收到請求后,保持連接不返回消息,直到進(jìn)行相關(guān)處理完畢后才返回響應(yīng)信息并關(guān)閉連接,客戶端接收到響應(yīng)信息后,進(jìn)行相關(guān)處理,處理完畢后再想服務(wù)器發(fā)送新的請求。

長輪詢的應(yīng)用場景?

    長輪詢常應(yīng)用于Web及時通訊、監(jiān)控、即時報價系統(tǒng)等需要實時將服務(wù)端的變化發(fā)送到客戶端的場景。

長輪詢的優(yōu)缺點?

優(yōu)點:無消息時不會頻繁的向服務(wù)器發(fā)送請求。

缺點:服務(wù)器保持連接比較耗資源

實現(xiàn):

前臺代碼:

我們在回調(diào)中,再次調(diào)用函數(shù),使其在每次請求關(guān)閉后,開始下一次請求。

<div id="container"></div>
<script type="text/javascript">
  $(function () {
    function longPolling() {
      $.getJSON("/DateTime/GetTime", function (json) {
        $("#container").append(json.date + "<br/>");
        longPolling();
      });
    };
    longPolling();
  });
</script>

后臺代碼:

我們后臺Controller要使用異步,繼承AsyncController基類

public class DateTimeController : AsyncController
  {
    public void GetTimeAsync()
    {
      //計時器,5秒種觸發(fā)一次Elapsed事件    
      System.Timers.Timer timer = new System.Timers.Timer(5000);
      //告訴.NET接下來將進(jìn)行一個異步操作    
      AsyncManager.OutstandingOperations.Increment();
      //訂閱計時器的Elapsed事件  
      timer.Elapsed += (sender, e) =>
      { //保存將要傳遞給GetTimeCompleted的參數(shù)        
        AsyncManager.Parameters["nowdate"] = e.SignalTime;
        //告訴ASP.NET異步操作已完成,進(jìn)行GetTimeCompleted方法的調(diào)用        
        AsyncManager.OutstandingOperations.Decrement();
      };
      //啟動計時器    
      timer.Start();
    }
    public ActionResult GetTimeCompleted(DateTime nowdate)
    {
      return Json(new { date = nowdate.ToString("HH:mm:ss") + " Welecom " }, JsonRequestBehavior.AllowGet);
    }
  }

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論