.Net MVC实现长轮询

发布时间 - 2026-01-11 01:52:00    点击率:

什么是长轮询?

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

长轮询原理?

    客户端向服务器发送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  # 长轮询  # 基于springboot 长轮询的实现操作  # JS实现websocket长轮询实时消息提示的效果  # Thinkphp结合AJAX长轮询实现PC与APP推送详解  # javascript和jQuery实现网页实时聊天的ajax长轮询  # jquery与php结合实现AJAX长轮询(LongPoll)  # PHP实现长轮询消息实时推送功能代码实例讲解  # 计时器  # 客户端  # 服务端  # 使其  # 应用于  # 发送到  # 后才  # 回调  # 要使  # 再想  # 大家多多  # 而无须  # 完毕后  # type  # text  # gt  # script  # javascript  # function  # GetTime 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: HTML 中动态设置元素 name 属性的正确语法详解  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  Java垃圾回收器的方法和原理总结  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  Linux网络带宽限制_tc配置实践解析【教程】  Android自定义控件实现温度旋转按钮效果  如何快速登录WAP自助建站平台?  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  Python图片处理进阶教程_Pillow滤镜与图像增强  如何用好域名打造高点击率的自主建站?  如何打造高效商业网站?建站目的决定转化率  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  如何在企业微信快速生成手机电脑官网?  重庆市网站制作公司,重庆招聘网站哪个好?  什么是javascript作用域_全局和局部作用域有什么区别?  如何用PHP工具快速搭建高效网站?  Laravel如何生成URL和重定向?(路由助手函数)  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  北京的网站制作公司有哪些,哪个视频网站最好?  香港服务器租用费用高吗?如何避免常见误区?  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  中山网站推广排名,中山信息港登录入口?  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  java ZXing生成二维码及条码实例分享  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  微信小程序 wx.uploadFile无法上传解决办法  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  如何彻底卸载建站之星软件?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  无锡营销型网站制作公司,无锡网选车牌流程?  北京网站制作公司哪家好一点,北京租房网站有哪些?  如何用虚拟主机快速搭建网站?详细步骤解析  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  如何在七牛云存储上搭建网站并设置自定义域名?  Laravel如何实现文件上传和存储?(本地与S3配置)  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  如何正确选择百度移动适配建站域名?  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  如何快速搭建FTP站点实现文件共享?  PHP 500报错的快速解决方法  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  清除minerd进程的简单方法  Laravel中间件如何使用_Laravel自定义中间件实现权限控制