什么是长轮询?
长轮询是“服务器推”手艺完成体式格局的一种,能够将服务端发作的变化实时传送到客户端而无须客户端频仍的地革新、发送要求。
长轮询道理?
客户端向服务器发送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>
背景代码:
我们背景Controller要运用异步,继续AsyncController基类
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长轮询的完成要领的细致内容,更多请关注ki4网别的相干文章!