服务器代码:
while (true)
{//死循环保持长链接
str = "<script >window.parent.Change('" + DateTime.Now.ToLongTimeString() + "')</script>";
this.Context.Response.Write(str);
this.Context.Response.Flush();//输脚本调用出
System.Threading.Thread.Sleep(1000);
}
上面的代码写在一个HttpHandler中当客户端关闭时,服务器并不知道或是没有马上知道,于是向浏览器继续推送。
当执行<script >window.parent.Change('" + DateTime.Now.ToLongTimeString() + "')</script>时
由于找不到Change()方法浏览器提示JS错误。请问如果在浏览器关闭窗口时能通知到服务器 中止死循环。

解决方案 »

  1.   

    try{}catch{Response.End();}多简单粗暴有效啊!
      

  2.   

    服务器端的try{}catch应该没用吧,事件是发生在浏览器上的,并不是服务器上出错。
      

  3.   

    Comet? 记录每个request连接的时间   服务器上循环的时候设置timeout 比如60秒    循环的时候就算达到50秒后就push   然后客户端继续连接一个新的request   
    这样即使关闭了浏览器   刚才的连接也会在60秒后自动放弃
      

  4.   

    哦~看错了。我以为服务器报客户端已经放弃链接了 这种错误呢。那你可以try catch JavaScript  这样也行的