protected void Page_Load(object sender, EventArgs e)
{
Response.Buffer = false;
while (true)
{
Response.Write(Delimiter + DateTime.Now.ToString("HH:mm:ss.FFF"));
Response.Flush();
// Suspend the thread for 1/2 a second
System.Threading.Thread.Sleep(500);
}
// Yes I know we'll never get here, it's just hard not to include it!
Response.End();
}
执行Response.Flush()时,新网页将发送到客户端 while块将永远在服务器上运行 当新的maeeage到达客户端时,会刷新新数据 如何继续这个地方是可行的。是不是应该创建一个新的Page对象?
答案 0 :(得分:1)
您所描述的内容存在一些问题......
1)您已经描述了错误匹配的客户端和服务器代码。那里的服务器代码仅适用于永久挂起的单个AJAX请求,并在客户端上得到通知,但不会启动新请求。但是,在您的评论中,您已经描述了确实启动新请求的客户。这两个概念不会合作。
2)在第1点阐述,请求永无止境意味着大多数浏览器永远不会看到它。 “典型的”AJAX请求在整个内容到达之前不会改变状态,因此请求将永远挂起。您必须结束请求,或使用更改状态的XHR请求,因为每个块都是从服务器刷新的,这在某些浏览器中是可行的。
3)即使1)工作,代理等,最终也会终止请求。他们不喜欢永远坐着的请求。
4)这是一个阻塞同步请求,会像疯了一样吃掉服务器资源。在灾难性失败之前,这不会超出线程池限制。
所以,你在这里给出的例子没有意义:)。