Ajax 连接是不是会在某些时候断开连接?
Posted
技术标签:
【中文标题】Ajax 连接是不是会在某些时候断开连接?【英文标题】:Does Ajax connection disconnect at some point?Ajax 连接是否会在某些时候断开连接? 【发布时间】:2011-03-02 06:18:42 【问题描述】:我的同事告诉我,AJAX 连接一直有效,直到用户关闭他/她的浏览器。据我所知,ajax 连接在其请求完成后会关闭其连接。我用 Firebug 和 HTTP 监控工具对其进行了测试,我注意到 AJAX 连接会自行关闭。
他说的对吗???
【问题讨论】:
【参考方案1】:Ajax 就像任何其他请求一样,当它完成时连接被关闭。你的同事错了。
注意:有些连接类型允许您无限期地保持连接打开
【讨论】:
【参考方案2】:分解什么是 AJAX -- 和 XMLHttpRequest。它是到某个资源(图像、文本等)的 URI 端点的连接。您的浏览器会在完成后立即关闭 HTTP 连接。
【讨论】:
【参考方案3】:Ajax 连接在接收到数据后关闭或者如果你关闭了 tab,那么连接将被强制关闭。
Here描述Ajax生命周期。
【讨论】:
【参考方案4】:在这里聚会迟到了,但这涉及到我现在正在处理的一个问题......
我的 Web 服务器在资源严重受限的平台(128k 闪存,48k RAM)上运行,因此它一次只能处理一个连接。在关闭当前连接之前,不会处理进一步的连接。此外,由于低延迟要求,它不会在某些 URL 上强制使用 Connection: close
。通常,一次只有一件事与设备对话。
AJAX 连接遵循浏览器为其他连接设置的任何规则。就我而言,我正在测试一个使用 AJAX 每秒读取一次允许保持活动的 URL 的网页,并且浏览器 直到几秒钟后才关闭连接 em>window 已关闭。结果,其他客户端无限期地等待。
所以不要假设 XHR 连接在完成后关闭。它们可能不是; Firefox 21 肯定不会关闭它们。
我当前的问题是我想强制我的 AJAX 请求在完成时关闭套接字,并且我正在使用 jQuery 的 .ajaxSend()
预发送钩子来设置 Connection: close
标头。 AJAX 似乎正在工作,但是当另一个客户端尝试连接时,它会得到“对等方重置连接”,所以我想知道 Firefox 是否没有注意到 XHR 请求上的“连接:关闭”标头并保持其结束即使在服务器关闭它的一侧之后,套接字也会打开(直到它在大约三秒后超时)。
【讨论】:
【参考方案5】:使用 JQuery 发出 AJAX 请求,一些连接会一直保持到接下来的 AJAX 调用。当服务器保持流打开直到响应的关闭事件触发时,这可能会成为一个真正的问题。
【讨论】:
以上是关于Ajax 连接是不是会在某些时候断开连接?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 spring-boot 和 postgres 连接会在一段时间后断开?