当前位置: 首页 > 编程日记 > 正文

一个非常简单的 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

相关文章:

周记 2016.4.5

1. BUILD_IDpleaseDontKillMe /usr/local/tomcat_car/bin/shutdown.sh /usr/local/tomcat_car/bin/startup.sh 2. windown中mysql解压版设置密码: 最开始mysql没有密码&#xff0c;启动mysql后&#xff1a; cmd -- mysql -u root ----- use mysql , 然后执行下面命令 update…

西北工业大学21计算机考研,西北工业大学2018年计算机考研879专业综合考试大纲...

题号&#xff1a;879《专业综合》考试大纲《专业综合》含数据结构、计算机网络、计算机组成原理、信号与系统四部分组成&#xff0c;四选二。一、数据结构1. 数据结构、抽象数据类型的概念;2. 线性结构的相关内容。通用线性表和特殊线性表(栈、队列、广义表等)的逻辑结构以及物…

iOS 实现多个可变 cell 复杂界面的制作

来源&#xff1a;飘游人 www.jianshu.com/p/9fc838d46f5e 如有好文章投稿&#xff0c;请点击 → 这里了解详情 在日常的开发中&#xff0c;有时会遇到内容块比较多&#xff0c;且又可变的界面&#xff1a; 这个界面中有些内容块是固定出现的&#xff0c;比如最上面的商品详情图…

做销售如何跟单,逼单!共20招!(转)

逼单是整个销售业务过程中最重要的一个环节。如果逼单失败你的整个业务就会失败&#xff0c;其实整个业务过程就是一个“逼”的过程&#xff0c;逼要掌握技巧&#xff0c;不要太操之过急&#xff0c;也不要慢条斯理&#xff0c;应该张弛有度&#xff0c;步步为营&#xff0c;也…

how to write Makefile

http://www.cnblogs.com/aoyihuashao/archive/2010/01/18/1650865.html转载于:https://www.cnblogs.com/hSheng/archive/2013/03/27/2985145.html

职称计算机word2007难吗,职称计算机word2007原题

全国职称计算机考试题库——word2007模块word2007模块第1套试题1.修改当前文本窗体类型为"数字",默认数字为"5"。2.设置用户在键入“中兴瑞典”时自动替换为“中星睿典”。3.将当前图片位置改为四周型环绕。4.用WORD的插入技术,插入如下字符&#xff1a;④…

iOS 9 通用链接(Universal Links)

来源&#xff1a;iOS_小松哥 www.jianshu.com/p/734c3eff8feb 如有好文章投稿&#xff0c;请点击 → 这里了解详情 什么是Universal Links? 在iOS9之前&#xff0c;对于从各种从浏览器、Safari中唤醒APP的需求&#xff0c;我们通常只能使用scheme。但是这种方式需要提前判断系…

为什么你的工作经验不值钱

前言 每年的三月到六月&#xff0c;都是招聘高峰&#xff0c;除了大量的应届毕业生涌入社会之外&#xff0c;还有一些工作了一两年尚未找到稳定归属感的人&#xff0c;也会开始投递简历&#xff0c;是的&#xff0c;基本都是在拿了年终奖之后。作为前端技术主管&#xff0c;有幸…

http://bbs.phome.net/showthread-13-45519-0.html

适用于想使用EmpireCMS建站的用户&#xff1b;EmpireCMS零基础的用户&#xff1b;会使用Dreamweaver设计简单表格式模板的用户。教程在线观看&#xff1a; 安装实例教程&#xff1a; http://www.phome.net/doc/ecmsedu/rm/install.htm入门实例教程&#xff1a; http://www.phom…

计算机32位操作系统最大识别到内存,win7 32位系统可以支持多大的内存_win7 的32位系统最大支持多少g的内存...

大家都知道win7系统有32位和64位之分&#xff0c;而两者的安装配置是不一样的&#xff0c;一般4G内存的我们安装64位的系统&#xff0c;但是很多用户不知道win7 32位系统可以支持多大的内存&#xff0c;这就给大家分享一下win7 的32位系统最大支持多少g的内存吧。一、内存和操作…

33个2017年必须了解的iOS开源库

原文 本文翻译自Medium&#xff0c;原作者为 Paweł Białecki 照片版权&#xff1a;&#xff08;Unsplash/Markus Pe&#xff09; 你好&#xff0c;iOS 开发者们&#xff01;我的名字叫 Paweł&#xff0c;我是一个独立 iOS 开发者&#xff0c;并且是 Enter Universe 的作者。…

codeforces 610D D. Vika and Segments(离散化+线段树+扫描线算法)

题目链接&#xff1a; D. Vika and Segments time limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputVika has an infinite sheet of squared paper. Initially all squares are white. She introduced a two-dimensional c…

ubuntu下安装redis

安装reids服务器 apt-get install redis-server 测试是否安装成功 redis-cli 安装phpredis扩展 #wgethttps://github.com/nicolasff/phpredis/downloads #tar -zxvf nicolasff-phpredis-2.1.3-124-gd4ad907.tar.gz # mv nicolasff-phpredis-d4ad907 php-5.3.8/ext/phpredis/ # …

往往存储与计算机硬盘或其他,硬盘是计算机系统中信息资源最重要的存储设备其所存放信息-Read.DOC...

硬盘是计算机系统中信息资源最重要的存储设备其所存放信息-ReadPAGEPAGE 2摘要关键字&#xff1a;磁盘、硬盘、中断13、扩展中断13、分区表、MBR、DBR、DPT、Boot、CMOS、FAT、柱面、磁道、磁头、扇区随着科学技术的不断发展和社会信息化程度的不断提高&#xff0c;电脑已逐渐深…

【Ghost Blog】如何给Ghost Blog添加背景音乐

昨天闲着无聊&#xff0c;就给自己的电脑装了一个Ghost的博客&#xff0c;打开博客的第一眼就被震撼到了&#xff0c;我们可以发现界面十分的简介。。。。上面的都是废话 我们来看一看我我选择的音乐播放器——网易云音乐&#xff0c;这个播放器就是在一个歌曲上点开之后有一个…

AE 动画直接变原生代码:Airbnb 发布开源动画库 Lottie

原文 Airbnb 发布的 Lottie 是一个面向 iOS、Android 和 React Native 的开源动画库。 简单来说&#xff0c;就是可以直接利用 AE 导出的 JSON 动画文件&#xff0c;将其解析为原生代码&#xff0c;并跨平台运行在设备上。 根据身边朋友的试用&#xff0c;通过 Canvas 绘制动画…

纹理贴图的模式设置

1 要对纹理进行任何的操作&#xff0c;必须先使该纹理问当前的active纹理 glGenTextures( 1, &reflectionTexObj );glBindTexture( GL_TEXTURE_2D, reflectionTexObj );glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );glTexParameteri( GL_TEXTURE_2D, G…

人社局计算机考试报名时间,内蒙古人社局:2016年下半年计算机软件水平考试报名时间通知...

关于做好2016年度下半年计算机技术与软件专业技术资格、翻译专业资格(水平)考试笔译考试报名工作的通知各旗县区人力资源和社会保障局、市直有关单位&#xff1a;根据内蒙古自治区人事考试中心《关于做好2016年度下半年计算机技术与软件专业技术资格(水平)考试报名工作的通知》…

即时通讯下数据粘包、断包处理实例(基于CocoaAsyncSocket)

来源&#xff1a;涂耀辉 www.jianshu.com/p/2e16572c9ddc 如有好文章投稿&#xff0c;请点击 → 这里了解详情 前言 本文旨以实例的方式&#xff0c;使用CocoaAsyncSocket这个框架进行数据封包和拆包。来解决频繁的数据发送下&#xff0c;导致的数据粘包、以及较大数据&#x…

linux下 为自己编写的程序 添加tab自动补全 功能

linux下 为自己编写的程序 添加tab自动补全功能 入门 complete 在我的tmp下随便写了一个a.sh, 为他补全edit /etc/bash_completion.d/foo_foo() {local cur prev optsCOMPREPLY()cur"${COMP_WORDS[COMP_CWORD]}"prev"${COMP_WORDS[COMP_CWORD-1]}"opts&quo…

笔记本电脑(Windows7)实现无线AP

使用环境&#xff1a;出差两个同事住一个房间、网线不够用、没有路由器 1、在windows命令窗口中运行以下命令 netsh wlan set hostednetwork modeallow netsh wlan set hostednetwork ssidOPEN key1234567890 netsh wlan start hostednetwork 命令解释&#xff1a;在笔记本插有…

华北电力大学计算机图形学实验报告,华北电力大学计算机图形学实验报告分析.doc...

华北电力大学计算机图形学实验报告分析科 技 学 院课程设计(综合实验)报告( 2013 -- 2014 年度第 2 学期)实验名称 OpenGL基本图元绘制实验课程名称 计算机图形学||专业班级&#xff1a;计算机11K1 学生姓名&#xff1a;曲强学 号&#xff1a;111909010118 成 绩&#xff1a;指…

Fastlane 入门实战教程从打包到上传iTunes connect

有关神器 Fastlane 持续集成\部署的文章网上挺多,本文定位是入门教程,针对 iOS 应用的持续部署,只需一条命令就可实现从 Xcode 项目到 编译\打包\构建\提交审核 文章稍微有点长,涵盖内容为:fastlane 简介\安装\配置 Snapshot 截图 XCTest 一键上传App Store 说明:本文将 App…

double int char 数据类型

贴心的limits... 测试代码&#xff1a; #include <iostream> #include <stdio.h> #include <limits> #include <math.h> using namespace std;int main() {//double 有效数字16位double test3 1.2345678912345678e17;printf("%.17lf\n", te…

开发工具Drawscript

在Mac App Store上有一款iOS开发工具PaintCode(MAC App Store地址)。它可以通过矢量绘图来绘出你想要生成的用户控件界面&#xff0c;然后由PaintCode来动态生成iOS & OSX绘制代码。这样&#xff0c;你在drawRect函数中就只要粘贴拷贝就能生成自己想要的图案了。奈何&#…

悉尼大学计算机研究生学制,悉尼大学研究生学制

澳大利亚悉尼大学具有丰富的研究生专业课程&#xff0c;学制安排一般在1-2年时间。悉尼大学硕士申请要求要求非211大学申请者&#xff0c;暂不需清华认证 (毕业证、学位证、成绩单)入学要求&#xff1a;工程类专业(Engineering,IT)Master of Professional Engineering985/211学…

2016.04.09 使用Powerdesigner进行创建数据库的概念模型并转为物理模型

2016.04.09 使用Powerdesigner进行创建数据库的概念模型并转为物理模型 2016-04-09 21:10:24 本文原创受版权保护&#xff0c;严禁转载。 请大家不要用于商业用途,支持正版,大家都是做软件的,知道开发一套软件实属不易啊&#xff01; 今天看到了一个很有趣并且很有用的辅助…

ESTabBarController

为什么要使用? 在开发工作中&#xff0c;我们可能会遇到需要自定义UITabBar的情况。例如&#xff1a;改变文字样式、添加一些动画效果、设置一个比默认更大的样式等等&#xff0c;以上需求如果只通过UITabBarItem往往很难实现。 有了ESTabBarController&#xff0c;你可以轻松…

iPhone App开发导航条(Navigation Bar)素材PSD下载

不管是iPhone还是Android的应用App界面基本上最上方都会有个导航条&#xff08;Navigation Bar&#xff09;。于是我决定创建此页面整理收集所有好看的适合在iPhone App应用开发中使用的导航条素材PSD文件&#xff0c;并附有下载链接供需要在自己的iPhone App应用开发中需要使用…

点歌服务器工作原理,KTV点歌系统方案概述

《KTV点歌系统方案概述》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《KTV点歌系统方案概述(7页珍藏版)》请在人人文库网上搜索。1、一)目前点歌系统的主流方式目前&#xff0c;可以实现的KTV系统的点歌方式很多&#xff0c;但是可以主要归类为以下两大方式&#xf…