这里有新鲜出炉的精品教程,程序狗速度看过来!
.NET 是 Microsoft XML web services 平台。你可以理解为. NET Framework ,XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。Microsoft .NET 平台提供创建 XML Web services 并将这些服务集成在一起之所需。对个人用户的好处是无缝的、吸引人的体验。
这篇文章主要为大家详细介绍了. Net MVC 实现长轮询的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
什么是长轮询?
长轮询是 "服务器推" 技术实现方式的一种,可以将服务端发生的变化实时传送到客户端而无须客户端频繁的地刷新、发送请求。
长轮询原理?
客户端向服务器发送 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);
- }
- }
来源: http://www.phperz.com/article/17/0822/337808.html