一个非常简单的 ASP.NET MVC 示例:长轮询(又叫:反向 AJAX,英文名:Comet)实现...
关于 长轮询(又叫:反向 AJAX,英文名:Comet)的介绍,请查看:反向Ajax,第1部分:Comet介绍
下面是代码实现:
UI:
<p><input type="button" onclick="longPolling();" value="开始长轮询" /> </p><div><p>服务器返回的信息:</p><p id="msgContainer"></p> </div> <script type="text/javascript">function longPolling(){$.getJSON("@Url.Action("GetTime", "DateTime")", function (json){$("#msgContainer").append(json.date + "<br/>");longPolling();});} </script>
后台代码:
public class DateTimeController : AsyncController {public DateTimeController(){}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);} }
运行效果图:
另一个示例:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Threading.Tasks; using System.IO;namespace TestMvc.MvcUI.Controllers {public class ArticleController : AsyncController{#region 方式 1public void ArticleAsync(string name){AsyncManager.OutstandingOperations.Increment();Task.Factory.StartNew(() =>{string path = ControllerContext.HttpContext.Server.MapPath(string.Format(@"\articles\{0}.html", name));using (StreamReader reader = new StreamReader(path)){AsyncManager.Parameters["content"] = reader.ReadToEnd();}AsyncManager.OutstandingOperations.Decrement();});}public ActionResult ArticleCompleted(string content){return Content(content);}#endregion#region 方式 2public Task<ActionResult> Article(string name){return Task.Factory.StartNew(() =>{string path = ControllerContext.HttpContext.Server.MapPath(string.Format(@"\articles\{0}.html", name));using (StreamReader reader = new StreamReader(path)){AsyncManager.Parameters["content"] = reader.ReadToEnd();}}).ContinueWith<ActionResult>(task =>{string content = (string)AsyncManager.Parameters["content"];return Content(content);});}#endregion#region 方式 3public Task<ActionResult> Article2(string name){return Task.Factory.StartNew(() =>{string path = ControllerContext.HttpContext.Server.MapPath(string.Format(@"\articles\{0}.html", name));using (StreamReader reader = new StreamReader(path)){return reader.ReadToEnd();}}).ContinueWith<ActionResult>(task =>{return Content((string)task.Result);});}#endregion} }
查考自:.Net MVC 实现长轮询
谢谢浏览!
转载于:https://www.cnblogs.com/Music/archive/2013/03/26/comet-demo-in-asp-net-mvc.html
一个非常简单的 ASP.NET MVC 示例:长轮询(又叫:反向 AJAX,英文名:Comet)实现...相关推荐
- 实现一个简单的长轮询
分析一下长轮询的实现方式 现在各大中间件都使用了长轮询的数据交互方式,目前比较流行的例如Nacos的配置中心,RocketMQ Pull(拉模式)消息等,它们都是采用了长轮询方的式实现.就例如Naco ...
- mysql 长轮询_基于HTTP长轮询实现简单推送
应用场景:设备为安卓.PC以及服务器,要求PC端能够单向给移动端发送消息指令,安卓端解析消息,进行后续处理动作.其中安卓端为基于Phonegap开发,说白了,就是HTML+JS. 规模:正常应用为20 ...
- 易语言服务端与客户端怎么传送_配置中心是怎么推送的?动手实现一个 Long Polling 长轮询...
介绍 众所周知,数据交互有两种模式:Push(推模式).Pull(拉模式). 推模式指的是客户端与服务端建立好网络长连接,服务方有相关数据,直接通过长连接通道推送到客户端.其优点是及时,一旦有数据变更 ...
- php中长轮询,PHP完成长轮询【代码示例】_后端开发
传统的AJAX轮询体式格局,客服端以用户定义的时候距离去服务器上查询最新的数据.种这类拉取数据的体式格局须要很短的时候距离才保证数据的精确度,但太短的时候距离客服端会对服务器在短时候内发送出多个要求. ...
- [导入]ASP.NET MVC框架开发系列课程(2):一个简单的ASP.NET MVC应用程序.zip(13.70 MB)...
讲座内容: 使用ASP.NET MVC框架进行开发与ASP.NET WebForms截然不同.本次课程将通过官方的示例程序简单了解一下ASP.NET MVC应用程序的结构与特点. 课程讲师: 赵劼 M ...
- Asp.net MVC 示例项目Suteki.Shop分析之---结束篇
到今天,这个系列的文章就要先告一段落了.其中我用了10篇文章也没有穷尽该项目的设计思想,只能从中捡了一些我感兴趣的东西进行了分析和说明,正所谓兴趣是最大的动力.当然限于本人水平有限,难免有一些认识上的 ...
- 精化集ASP.NET AJAX与ASP.NET MVC分类第二轮筛选结果
以下是包同学导给我的清单.老赵的第二轮把关很严,杀了几乎99%的文章.不过似乎有少部分并没有经过我的手,可能是其他同学转过来的吧.第三轮老赵依旧会严格把关,肯定也会杀更多(包括通过其他同学第二轮的)文 ...
- Asp.net MVC 示例项目Suteki.Shop分析之---ViewData
使用强类型的ViewData好处有许多,比如说在IDE中就会有更好的支持,比如代码提示.同时在View与Controller之间有更严谨的"约定".在Suteki. ...
- Asp.net MVC 示例项目Suteki.Shop分析之---Model和Service
老戴的文章,自己去看吧 http://www.cnblogs.com/daizhj/archive/2009/05/31/1455867.html 转载于:https://www.cnblogs.co ...
最新文章
- 谷歌低调了 5 年的 Fuchsia OS,终于有望面世了!
- python的类型化_显式类型化的Python版本?
- 【Linux】在虚拟机上安装CentOS7
- oracle 树状结构一直出现不了_SEO站内优化:网站结构优化(十一)
- Java高并发编程:使用JDK5中同步技术的3个面试题
- UA MATH636 信息论9 Reed-Solomon Code
- PurdueUCLA提出梯度Boosting网络,效果远好于XGBoost模型!
- C语言那点事——如何从零学好C语言?
- bom_clear.php,thinkphp清除BOM方法
- ssl双向认证_详解TLS/SSL运行机制
- 学英语---(2)脱口而出100句经典英语口语
- 计算机知识技能答案,学生计算机知识技能竞参考题范围及答案.doc
- 缓存与缓冲的区别 Difference Between Cache and Buffer
- 【论文分享】ACL 2020 多模态相关任务分享
- word自动生成目录和页码设置
- ESP8266 NonOS-SDK Web配网
- PDF、WORD文档快速翻译成中文的方法,帮你一键搞定!
- 谈谈如何解决win7/win10/win11右键转圈卡顿问题
- ubuntu安装搜狗拼音输入法及安装后没有中文解决办法
- 阿里巴巴年度技术总结 - 人工智能在搜索的应用和实践