彗星问题与废弃的开放连接

时间:2011-01-18 01:13:14

标签: javascript ajax comet long-polling tornado

我正在使用一些彗星技术,包括长轮询和永久帧。我正在使用iframe来交叉子域名。我在实现这些技术时遇到的一个问题是,当用户刷新页面或导航到导致新请求的另一个页面时,彗星连接将从旧页面保持打开状态。我的服务器(龙卷风)从未接收到连接,并且从我有限的wireshark能力中我看不到任何TCP fin数据包发送。但是,当我关闭浏览器时,套接字在此时关闭。

这些被放弃的开放连接只是在服务器端耗尽内存而没有充分的理由。此外,当服务器向打开的套接字发送一些消息并且IE然后正确显示错误消息时,它会导致问题:“无法从释放的脚本执行代码”。所以IE正试图在导航离开的旧窗口上执行代码。其他人如何处理这个问题?我应该使用onbeforeunload以某种方式关闭连接吗?

1 个答案:

答案 0 :(得分:1)

您可以不时地从客户端重新启动打开的连接,如果请求未在指定的时间范围内进入服务器,则可以安全地关闭旧连接。