服务器推送出现的JS问题
服务器代码:
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错误。
请问如果在浏览器关闭窗口时能通知到服务器 中止死循环。
------解决方案--------------------try{}catch{Response.End();}
多简单粗暴有效啊!
------解决方案--------------------Comet? 记录每个request连接的时间 服务器上循环的时候设置timeout 比如60秒 循环的时候就算达到50秒后就push 然后客户端继续连接一个新的request
这样即使关闭了浏览器 刚才的连接也会在60秒后自动放弃