.Net MVC實(shí)現(xiàn)長(zhǎng)輪詢
什么是長(zhǎng)輪詢?
長(zhǎng)輪詢是“服務(wù)器推”技術(shù)實(shí)現(xiàn)方式的一種,可以將服務(wù)端發(fā)生的變化實(shí)時(shí)傳送到客戶端而無(wú)須客戶端頻繁的地刷新、發(fā)送請(qǐng)求。
長(zhǎng)輪詢?cè)恚?/strong>
客戶端向服務(wù)器發(fā)送Ajax請(qǐng)求,服務(wù)器接收到請(qǐng)求后,保持連接不返回消息,直到進(jìn)行相關(guān)處理完畢后才返回響應(yīng)信息并關(guān)閉連接,客戶端接收到響應(yīng)信息后,進(jìn)行相關(guān)處理,處理完畢后再想服務(wù)器發(fā)送新的請(qǐng)求。
長(zhǎng)輪詢的應(yīng)用場(chǎng)景?
長(zhǎng)輪詢常應(yīng)用于Web及時(shí)通訊、監(jiān)控、即時(shí)報(bào)價(jià)系統(tǒng)等需要實(shí)時(shí)將服務(wù)端的變化發(fā)送到客戶端的場(chǎng)景。
長(zhǎng)輪詢的優(yōu)缺點(diǎn)?
優(yōu)點(diǎn):無(wú)消息時(shí)不會(huì)頻繁的向服務(wù)器發(fā)送請(qǐng)求。
缺點(diǎn):服務(wù)器保持連接比較耗資源
實(shí)現(xiàn):
前臺(tái)代碼:
我們?cè)诨卣{(diào)中,再次調(diào)用函數(shù),使其在每次請(qǐng)求關(guān)閉后,開始下一次請(qǐng)求。
<div id="container"></div> <script type="text/javascript"> $(function () { function longPolling() { $.getJSON("/DateTime/GetTime", function (json) { $("#container").append(json.date + "<br/>"); longPolling(); }); }; longPolling(); }); </script>
后臺(tái)代碼:
我們后臺(tái)Controller要使用異步,繼承AsyncController基類
public class DateTimeController : AsyncController { public void GetTimeAsync() { //計(jì)時(shí)器,5秒種觸發(fā)一次Elapsed事件 System.Timers.Timer timer = new System.Timers.Timer(5000); //告訴.NET接下來(lái)將進(jìn)行一個(gè)異步操作 AsyncManager.OutstandingOperations.Increment(); //訂閱計(jì)時(shí)器的Elapsed事件 timer.Elapsed += (sender, e) => { //保存將要傳遞給GetTimeCompleted的參數(shù) AsyncManager.Parameters["nowdate"] = e.SignalTime; //告訴ASP.NET異步操作已完成,進(jìn)行GetTimeCompleted方法的調(diào)用 AsyncManager.OutstandingOperations.Decrement(); }; //啟動(dòng)計(jì)時(shí)器 timer.Start(); } public ActionResult GetTimeCompleted(DateTime nowdate) { return Json(new { date = nowdate.ToString("HH:mm:ss") + " Welecom " }, JsonRequestBehavior.AllowGet); } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 基于springboot 長(zhǎng)輪詢的實(shí)現(xiàn)操作
- JS實(shí)現(xiàn)websocket長(zhǎng)輪詢實(shí)時(shí)消息提示的效果
- Thinkphp結(jié)合AJAX長(zhǎng)輪詢實(shí)現(xiàn)PC與APP推送詳解
- javascript和jQuery實(shí)現(xiàn)網(wǎng)頁(yè)實(shí)時(shí)聊天的ajax長(zhǎng)輪詢
- jquery與php結(jié)合實(shí)現(xiàn)AJAX長(zhǎng)輪詢(LongPoll)
- PHP實(shí)現(xiàn)長(zhǎng)輪詢消息實(shí)時(shí)推送功能代碼實(shí)例講解
相關(guān)文章
ASP.NET獲取不到JS設(shè)置cookies的解決方法
有時(shí)候通過(guò)一個(gè)頁(yè)面設(shè)置的js,在其它的子頁(yè)面或父頁(yè)面就無(wú)法正常獲取,主要是因?yàn)槁窂降膯?wèn)題, 設(shè)置到根目錄中即可。下面是具體的解決方法。2010-12-12Visual Stduio 2010開發(fā)環(huán)境搭建教程
這篇文章主要為大家詳細(xì)介紹了Visual Stduio 2010開發(fā)環(huán)境搭建教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04.NET Core讀取配置文件方式詳細(xì)總結(jié)
這篇文章主要為大家詳細(xì)總結(jié)了.NET Core讀取配置文件方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08asp.net GridView控件中模板列CheckBox全選、反選、取消
GridView控件中模板列CheckBox全選、反選、取消實(shí)現(xiàn)代碼。2009-12-12Asp.Net防止刷新重復(fù)提交數(shù)據(jù)的辦法
最近在用Asp.Net編寫點(diǎn)東西時(shí)遇到個(gè)問(wèn)題:即用戶在提交表單后按刷新就會(huì)重復(fù)提交數(shù)據(jù),即所謂的“刷新重復(fù)提交”的問(wèn)題。2013-03-03ASP.NET MVC分頁(yè)的實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC分頁(yè)的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03asp.net slickupload 使用方法(文件上傳)
asp.net下使用slickupload上傳文件的代碼2009-05-05