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 连接是不是会在某些时候断开连接?的主要内容,如果未能解决你的问题,请参考以下文章

解决Linux SSH连接容易断开的问题

为啥 spring-boot 和 postgres 连接会在一段时间后断开?

swoole tcp突然断开连接

Strophe javascript 防止在某些延迟时断开连接

Android ble 设备有时不会断开连接

如何用C语言检测网络是不是连接上、已连接、已断开状态