缺省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;
}
}