javascript - 废弃开放连接的 Comet 问题

标签 javascript ajax comet long-polling tornado

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

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

最佳答案

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

关于javascript - 废弃开放连接的 Comet 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4719609/

相关文章:

JavaScript 函数数组

Grails 服务器推送

javascript - 使用php和ajax、js从数据库中删除

ajax - 如何使搜索引擎可抓取 ajax 内容

javascript - 在具有动态值的函数上使用的变量不允许我通过 ajax 发送表单

javascript - 通过 HTTP 进行实时双向 JSON-RPC 通信

请求前的 HTTP 响应

javascript - 如何在鼠标移出时停止 jQuery 悬停函数队列?

javascript - Plupload - 上传完成后的功能?

javascript - 具有更好结构的 Redux 状态