這篇文章主要為大家詳細介紹了.Net MVC實現長輪詢的相關資料,具有一定的參考價值,有興趣的小伙伴們可以參考一下
##什麼是長輪詢?
長輪詢是「伺服器推」技術實作方式的一種,可以將服務端發生的變更即時傳送到客戶端且無須用戶端頻繁的地刷新、傳送請求。長輪詢原理?
用戶端向伺服器發送Ajax請求,伺服器接收到請求後,保持連接不回傳訊息,直到進行相關處理完畢後才回傳回應訊息並關閉連接,用戶端接收到回應訊息後,進行相關處理,處理完畢後再想伺服器發送新的請求。長輪詢的應用程式場景?
長輪詢常應用於Web及時通訊、監控、即時報價系統等需要即時將服務端的變更傳送到客戶端的場景。長輪詢的優缺點?
優點:無訊息時不會頻繁的向伺服器發送請求。 缺點:伺服器保持連線比較耗資源實作:
#前台程式碼:我們在回呼中,再次調用函數,使其在每次請求關閉後,開始下一次請求。<p id="container"></p> <script type="text/javascript"> $(function () { function longPolling() { $.getJSON("/DateTime/GetTime", function (json) { $("#container").append(json.date + "<br/>"); longPolling(); }); }; longPolling(); }); </script>
public class DateTimeController : AsyncController { public void GetTimeAsync() { //计时器,5秒种触发一次Elapsed事件 System.Timers.Timer timer = new System.Timers.Timer(5000); //告诉.NET接下来将进行一个异步操作 AsyncManager.OutstandingOperations.Increment(); //订阅计时器的Elapsed事件 timer.Elapsed += (sender, e) => { //保存将要传递给GetTimeCompleted的参数 AsyncManager.Parameters["nowdate"] = e.SignalTime; //告诉ASP.NET异步操作已完成,进行GetTimeCompleted方法的调用 AsyncManager.OutstandingOperations.Decrement(); }; //启动计时器 timer.Start(); } public ActionResult GetTimeCompleted(DateTime nowdate) { return Json(new { date = nowdate.ToString("HH:mm:ss") + " Welecom " }, JsonRequestBehavior.AllowGet); } }
以上是有關.Net MVC長輪詢的實作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!