在beforeunload中的ajax可靠地执行吗?

时间:2015-06-05 21:50:52

标签: javascript ajax

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

usemask =True

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

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

为了澄清,我知道如果浏览器/计算机崩溃,我无能为力。这就是心跳的意义所在。我的意思是在正常用例中,当用户关闭/更改/刷新页面时。

1 个答案:

答案 0 :(得分:2)

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

您正在使用的心跳是最常见的解决方法。这也将包括您丢失网络连接或掉电或计算机睡眠模式或浏览器崩溃,beforeunload处理程序不会。

我见过的另一个解决方法是使用socket.io连接到服务器。由于socket.io连接具有小而非常有效的心跳,并且服务器将在页面关闭时看到套接字关闭,因此您将通过心跳看到异常关闭,从而实现两全​​其美并且您将通过webSocket连接立即看到正常关闭。

相关问题