【问题标题】:How do I detect when a user closes their browser?如何检测用户何时关闭浏览器?
【发布时间】:2021-11-06 15:36:20
【问题描述】:

我正在尝试在我的应用程序中进行一些设置,以便检测两个用户是否同时编辑同一个文档。我能想到的最好方法是在用户登录和注销时向后端发送信息,并检查何时我想查看两个用户是否同时处于活动状态。使用 useEffect 很容易检测到启动应用程序,但我很难找到一种干净的方法。

我查看了 onunload 和 onbeforeunload,但它们似乎没有通用的浏览器支持,而且我不希望通过弹出窗口破坏用户体验。我在考虑检查空闲,但如果有更清洁的方法,比如谷歌云平台,那会很有帮助。谢谢!

【问题讨论】:

  • 如果浏览器关闭,您希望代码如何运行以更新后端?
  • 查看 socket.io - socket.io
  • @GabrielMC 我不知道 websockets,这是有用的信息,谢谢。
  • 没问题。他们太棒了。它们允许您在您的网络应用程序中进行实时更新,而无需进行轮询。 Socket.io 还有一个很容易监听的“断开连接”事件

标签: javascript reactjs express google-cloud-platform firebase-authentication


【解决方案1】:

这听起来像是onDisconnect 的一个很好的用例。你可以阅读更多关于它的信息herehere

这是一个简单的例子:

var ref = firebase.database().ref("onlineState");
ref.onDisconnect().set(false);

这里发生的是这个命令被发送到 Firebase 并在那里。当您失去与 Firebase 的连接时,它将被执行。是否通过关闭浏览器/选项卡等来完成都没关系...

如果您需要更复杂的代码执行,请将 Firebase 云函数触发器附加到这些更改。重要的是要知道您不能在该事件上执行客户端代码。

【讨论】:

    猜你喜欢
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    相关资源
    最近更新 更多