在浏览器窗口关闭时执行 AJAX

时间:2021-06-12 06:17:30

标签: javascript socket.io chat laravel-echo

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

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

在互联网上搜索并发现了 Javascript 中的 unload 事件,但他们说处理这个问题不可靠。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

相关问题