gpt4 book ai didi

javascript - beforeunload 中的 ajax 会可靠地执行吗?

转载 作者:行者123 更新时间:2023-11-29 14:47:41 25 4
gpt4 key购买 nike

我有一个 HTML5 应用程序,它需要在用户更改/刷新页面时发送断开连接的 ajax 请求。我目前正在使用此代码:

window.addEventListener("beforeunload", function(event) {
$.ajax({
url: api_disconnect,
data: { identifier: token },
method: "GET"
});
});

我不需要处理响应,甚至不需要确保浏览器收到响应。我的问题是,我可以依赖接收请求的服务器吗?

如果没有,我怎样才能做到这一点?目前我让应用程序发送“我还活着!”每 15 秒请求一次(这已经感觉太多了)。我希望服务器知道用户断开连接的那一秒。

澄清一下,我知道如果浏览器/计算机崩溃,我对此无能为力。这就是心跳的用途。我只是指在正常用例中,当用户关闭/更改/刷新页面时。

最佳答案

您不能 100% 依赖 ajax 调用。您可以测试许多浏览器和操作系统,并确定哪些浏览器和操作系统通常会在页面被拆除之前发送 ajax 调用,但任何规范都不能保证这样做。

您使用的心跳是最常见的解决方法。这也将涵盖您因网络连接丢失或断电或计算机 sleep 模式或浏览器崩溃而 beforeunload 处理程序不会。

我看到讨论的另一种解决方法是使用 socket.io 连接到服务器。由于 socket.io 连接有一个小的、非常有效的心跳,并且服务器会在页面关闭时看到套接字关闭,所以你可以两全其美,因为你会通过心跳看到异常关闭您将看到通过关闭 webSocket 连接立即正常关闭。

关于javascript - beforeunload 中的 ajax 会可靠地执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30676368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com