有关.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#中值类型和引用类型的区别

c#中关于程序功能实现以及对代码选择的思考

.net中json数据进行序列化和反序列化操作分析

c#中引用类型之特例string的详细介绍

c#中foreach实例代码

详解.net 同步与异步 之 mutex

.net core mvc实现一个在线房间棋牌游戏微信支付和及时通讯的简易框架

c#中五种访问修饰符作用范围实例详解

关于.net 3.5中的委托实例

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




打赏

取消

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

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

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

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

评论

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