.Net MVC實現(xiàn)長輪詢
什么是長輪詢?
長輪詢是“服務器推”技術(shù)實現(xiàn)方式的一種,可以將服務端發(fā)生的變化實時傳送到客戶端而無須客戶端頻繁的地刷新、發(fā)送請求。
長輪詢原理?
客戶端向服務器發(fā)送Ajax請求,服務器接收到請求后,保持連接不返回消息,直到進行相關(guān)處理完畢后才返回響應信息并關(guān)閉連接,客戶端接收到響應信息后,進行相關(guān)處理,處理完畢后再想服務器發(fā)送新的請求。
長輪詢的應用場景?
長輪詢常應用于Web及時通訊、監(jiān)控、即時報價系統(tǒng)等需要實時將服務端的變化發(fā)送到客戶端的場景。
長輪詢的優(yōu)缺點?
優(yōu)點:無消息時不會頻繁的向服務器發(fā)送請求。
缺點:服務器保持連接比較耗資源
實現(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接下來將進行一個異步操作
AsyncManager.OutstandingOperations.Increment();
//訂閱計時器的Elapsed事件
timer.Elapsed += (sender, e) =>
{ //保存將要傳遞給GetTimeCompleted的參數(shù)
AsyncManager.Parameters["nowdate"] = e.SignalTime;
//告訴ASP.NET異步操作已完成,進行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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ASP.NET導出Excel打開時提示:與文件擴展名指定文件不一致解決方法
ASP.NET導出Excel,打開時提示“您嘗試打開文件'XXX.xls'的格式與文件擴展名指定文件不一致” 很是郁悶,于是搜集了一些解決方法,感興趣的朋友可以了解下2013-01-01
Visual Studio 2017 (VS 2017)離線安裝包制作方法
這篇文章主要為大家詳細介紹了Visual Studio 2017離線安裝包的制作方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03
利用noesis.Javascript開源組件.Net中執(zhí)行javascript腳本
利用Noesis.Javascript開源組件可以做到在.net中執(zhí)行js腳本,同時js腳本也能調(diào)用C#函數(shù)。這個組件的獲得方式:在NuGet中輸入搜索"Noesis"就能找到,我們來做個搜索功能:用戶能夠在textbox中輸入js腳本來篩選list記錄2013-12-12
關(guān)閉子頁面刷新父頁面中部分控件數(shù)據(jù)的方法
關(guān)閉子頁面刷新父頁面中部分控件數(shù)據(jù),具體的實現(xiàn)代碼如下,感興趣的朋友可以參考下哈2013-05-05
基于Cookie使用過濾器實現(xiàn)客戶每次訪問只登錄一次
這篇文章主要介紹了基于Cookie使用過濾器實現(xiàn)客戶每次訪問只登錄一次,需要的朋友可以參考下2017-06-06
Visual Studio 2017開發(fā)環(huán)境的安裝圖文教程
Visual Studio 2017是微軟于2017年3月8日正式推出的新版本,是迄今為止 最具生產(chǎn)力 的 Visual Studio 版本。這篇文章主要介紹了Visual Studio 2017開發(fā)環(huán)境的安裝,需要的朋友可以參考下2017-11-11
異步 HttpContext.Current實現(xiàn)取值的方法(解決異步Application,Session,Cache.
在一個項目中,為了系統(tǒng)執(zhí)行效率更快,把一個經(jīng)常用到的數(shù)據(jù)庫表通過dataset放到Application中,發(fā)現(xiàn)在異步實現(xiàn)中每一次都會出現(xiàn)HttpContext.Current為null的異常,后來在網(wǎng)上查了好多資料,發(fā)現(xiàn)問這個問題的人多,回答的少2009-07-07

