.Net MVC实现长轮询

2025-05-29 0 69

什么是长轮询

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

长轮询原理?

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

长轮询的应用场景?

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

长轮询的优缺点?

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

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

实现:

前台代码:

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

?

1

2

3

4

5

6

7

8

9

10

11

12
<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基类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23
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);

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 .Net MVC实现长轮询 https://www.kuaiidc.com/99602.html

相关文章

发表评论
暂无评论