net MVC实现长轮询的方法

  介绍

这篇文章给大家分享的是有关。净MVC实现长轮询的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

<强>什么是长轮询?

长轮询是“服务器推“技术实现方式的一种,可以将服务端发生的变化实时传送到客户端而无须客户端频繁的地刷,新发送请求。

<强>长轮询原理?

客户端向服务器发送Ajax请求,服务器接收到请求后,保持连接不返回消息,直到进行相关处理完毕后才返回响应信息并关闭连接,客户端接收到响应信息后,进行相关处理,处理完毕后再想服务器发送新的请求。

<强>长轮询的应用场景吗?

长轮询常应用于Web及时通讯,监控,即时报价系统等需要实时将服务端的变化发送到客户端的场景。

<强>长轮询的优缺点吗?

优点:无消息时不会频繁的向服务器发送请求。

缺点:服务器保持连接比较耗资源

<强>实现:

前台代码:

我们在回调中,再次调用函数,使其在每次请求关闭后,开始下一次请求。

& lt; p id=癱ontainer"祝辞& lt;/p>   & lt;脚本类型=拔谋?javascript"比;   $(函数(){   函数longPolling () {   美元.getJSON (“/DateTime/GetTime",函数(json) {   美元(“# container") .append (json。日期+“& lt; br/在“);   longPolling ();   });   };   longPolling ();   });   & lt;/script>

后台代码:

我们后台控制器要使用异步,继承AsyncController基类

公共类DateTimeController: AsyncController
  {
  公共空间GetTimeAsync ()
  {//计时器,5秒种触发一次运行事件
  System.Timers。计时器计时=new与system . timers . Timer类(5000);//告诉。net接下来将进行一个异步操作
  AsyncManager.OutstandingOperations.Increment ();//订阅计时器的运行事件
  计时器。运行+=(发送者,e)=比;
  {//保存将要传递给GetTimeCompleted的参数
  AsyncManager.Parameters [“nowdate"]=e.SignalTime;//告诉ASP.NET异步操作已完成,进行GetTimeCompleted方法的调用
  AsyncManager.OutstandingOperations.Decrement ();
  };//启动计时器
  timer.Start ();
  }
  公共ActionResult GetTimeCompleted (DateTime nowdate)
  {
  返回Json(新{日期=nowdate.ToString (“HH: mm: ss") +“;Welecom“;},JsonRequestBehavior.AllowGet);
  }
  }

感谢各位的阅读!关于。Net MVC实现长轮询的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!

net MVC实现长轮询的方法