1

我的应用程序依赖于能够设置用户在线/离线状态。

我已经通过使用 window.onbeforeunload 查看用户何时离开页面解决了这个问题。

问题是下面的代码并不总是被执行,因此仍然说有些人离开页面时仍然在线。

这是我当前的代码:

window.onbeforeunload = function (event) {
    $.ajax({
        type: 'GET',
        url: './changeStatus.php?cid=' + ccID + '&status=0',
        contentType: "application/json",
        dataType: 'json',
        cache: false,
        async: false,
        success: function (data) {},
        error: function (e) {
            //console.log(e);
        }
    });
    return;
};

有什么想法我可以强迫它总是被执行吗?(在所有浏览器上)

4

1 回答 1

0

该脚本可能总是在页面关闭时执行,但这并不意味着它总是成功调用服务器。

例如,如果用户在关闭页面之前断开 Internet 连接,则脚本无法向服务器发送任何内容。您根本不能依赖每次关闭页面时都从浏览器中获取呼叫。

您可以在用户最后一次听到用户时在服务器上进行跟踪,以便在用户有一段时间没有请求任何页面时将其设置为离线。另一种选择是只要用户在页面上就频繁地向服务器发送请求,当请求停止时,服务器就知道用户已经离开了。

于 2013-02-10T22:30:22.020 回答