有关.Net MVC长轮询的实现方法


本文摘自PHP中文网,作者巴扎黑,侵删。

这篇文章主要为大家详细介绍了.Net MVC实现长轮询的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

什么是长轮询?

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

长轮询原理?

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

长轮询的应用场景?

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

长轮询的优缺点?

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

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

实现:

前台代码:

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

1

2

3

4

5

6

7

8

9

10

11

12

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

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

    }

  }

以上就是有关.Net MVC长轮询的实现方法的详细内容!

相关阅读 >>

关于c#视频教程的资源分享

.net mymvc框架执行action的过程详解

c#中匿名委托以及lambda表达式的实例详解

asp.net c#中application的用法教程

dynamic(c# 参考)

c#与vb.net混合开发测试的详细介绍(图文)

代码分析:在.net core中使用ref和span<t>提高程序性能

c#中关于timer定时器重入问题的解决方法

windows登录功能使用c#实现的示例

c# 利用委托进行异步处理实例代码

更多相关阅读请进入《.net》频道 >>




打赏

取消

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

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...