ASP.NET 下的Http Server Push 例子
2008-08-20 17:41
477 查看
缺省HTTP是一个来回的,Request过去,Response回来,就算结束了。这样能够大大提高Web服务器的利用效率。办完事就滚蛋,不要堵在门口。
但是有些场合,可能有人想挂在页面上面不下来。例如股票行情、在线聊天,毕竟让人家每几秒去看一下还不够爽。最好数据变化了就立刻通知浏览器。
这个技术就用到了Server Push。 详细名词解释 http://en.wikipedia.org/wiki/Push_technology
找了半天没有找到合适的例子,找了一个却不能比较好运行,就改造了一把,运行得很不错。原理还是蛮简单的,记下来以备参考。Yahoo的股票行情动态刷新就是这个原理。
Code
protected override void Render(HtmlTextWriter output)
{
base.Render(output);
Response.Buffer = true;
bool isOutput = false;
Response.Write("");
Response.Flush();
int lastsecond = 0;
while (Response.IsClientConnected)
{
Thread.Sleep(300);
if (DateTime.Now.Second != lastsecond && !isOutput)
{
lastsecond = DateTime.Now.Second;
Response.Write("<script> SetTimer('" + DateTime.Now.ToString() + "')\n </script> ");
Response.Flush();
isOutput = true;
}
else
{
isOutput = false;
}
}
但是有些场合,可能有人想挂在页面上面不下来。例如股票行情、在线聊天,毕竟让人家每几秒去看一下还不够爽。最好数据变化了就立刻通知浏览器。
这个技术就用到了Server Push。 详细名词解释 http://en.wikipedia.org/wiki/Push_technology
找了半天没有找到合适的例子,找了一个却不能比较好运行,就改造了一把,运行得很不错。原理还是蛮简单的,记下来以备参考。Yahoo的股票行情动态刷新就是这个原理。
Code
protected override void Render(HtmlTextWriter output)
{
base.Render(output);
Response.Buffer = true;
bool isOutput = false;
Response.Write("");
Response.Flush();
int lastsecond = 0;
while (Response.IsClientConnected)
{
Thread.Sleep(300);
if (DateTime.Now.Second != lastsecond && !isOutput)
{
lastsecond = DateTime.Now.Second;
Response.Write("<script> SetTimer('" + DateTime.Now.ToString() + "')\n </script> ");
Response.Flush();
isOutput = true;
}
else
{
isOutput = false;
}
}
相关文章推荐
- IIS7 Asp.Net HTTP 错误 500.19 Internal Server Error
- ASP.NET关于http/1.1 500 Server Error 的解决办法
- HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置。
- HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置
- javascript中文编码/解析与C#ASP.NET中文编码/解析 C#: Server.UrlEncode() HttpUtility.UrlEncode() javascript: escape() encodeURI() encod
- Asp.net学习第一天---OurHttpServer
- HTTP 错误 500.22 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置。(解决办法)
- asp.net页面间传值的几种方法 表单提交 传送页面代码 复制代码 <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server
- 对于asp.net中的服务器变量HttpContext.Current.Request.ServerVariables
- vs.net中创建asp.net程序时,出现:http/1.1 500 internal server error
- C#写的程序集注册成标准的Com组件,在asp中用Server.CreateObject()调用。 http://blog.csdn.net/lgq_12345/archive/2007/05/24/1624822.aspx
- apache http server环境下玩asp.net
- Flash Media Server 2使用入门基础http://blog.breakn.net/article.asp?id=267
- Asp.net的服务器推技术 (Server Push) - .NET
- Asp.net的服务器推技术 (Server Push)
- IIS安全工具UrlScan介绍 ASP.NET 两种超强SQL 注入免费解决方案( 基于IIS,使用免费工具) 批改或隐藏IIS7.5的Server头信息 移除X-Powered-By,MVC,ASP.NET_SessionId 的 HTTP头或者cookie名称
- ASP.NET中使用Server.Transfer()方法在页间传值 http://www.jaron.cn/chs_scripts/9/2004-09/101590.shtml
- [转]ASP.NET HttpModule for handling session end with StateServer
- asp.net 服务器推送(Server Push) 支持 IE、火狐、谷歌等 仅供参考