什么是长轮询?
长轮询是“服务器推”技术实现方式的一种,可以将服务端发生的变化实时传送到客户端而无须客户端频繁的地刷新、发送请求。
长轮询原理?
客户端向服务器发送Ajax请求,服务器接收到请求后,保持连接不返回消息,直到进行相关处理完毕后才返回响应信息并关闭连接,客户端接收到响应信息后,进行相关处理,处理完毕后再想服务器发送新的请求。
长轮询的应用场景?
长轮询常应用于Web及时通讯、监控、即时报价系统等需要实时将服务端的变化发送到客户端的场景。
长轮询的优缺点?
优点:无消息时不会频繁的向服务器发送请求。
缺点:服务器保持连接比较耗资源
实现:
前台代码:
我们在回调中,再次调用函数,使其在每次请求关闭后,开始下一次请求。
<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秒种触发一次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,长轮询
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
桃源资源网 Design By www.nqtax.com
暂无“.Net MVC实现长轮询”评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。