【问题标题】:Doing AJAX when browser's window is closed关闭浏览器窗口时执行 AJAX
【发布时间】:2021-06-12 06:17:30
【问题描述】:

我有一个使用 Laravel Echo 和 Pusher 的聊天应用程序(类似于 Socket.io)。

我遇到的问题是,如果另一侧没有单个用户在线,我无法更新数据库中的用户在线状态

一直在网上搜索,在Javascript中发现了unload事件,但他们告诉处理这个问题并不可靠。

我还没有在 Laravel Echo 上找到一个事件来触发它,即使每次用户加载页面或关闭浏览器时 Pusher 都会用“断开连接”事件记录它

处理这个问题最有效的方法是什么?

【问题讨论】:

    标签: javascript socket.io chat laravel-echo


    【解决方案1】:

    我不知道用过的工具。也许使用假用户/机器人至少让某人始终在线?

    关于关闭窗口。还有其他适合此的活动。最明显和推荐的是beforeunload。另一个选项是pagehide,但目前支持较少,含义也有所不同。

    navigator.sendBeacon() 也可能在此处用作网络请求传输。这样浏览器就不必等待响应了。

    【讨论】:

    • 刚刚测试了beforeunload,对AJAX请求还是无效
    • 普通 AJAX 需要响应,sendBeacon() 不需要。我将它用于类似的任务,但我不需要 100% 的可靠性。
    猜你喜欢
    • 1970-01-01
    • 2011-09-03
    • 2012-09-24
    • 2015-04-27
    • 2014-10-14
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 2012-07-21
    相关资源
    最近更新 更多