javascript - 为什么 Firebase onDisconnect 每小时触发一次?

标签 javascript firebase firebase-realtime-database firebase-authentication

我有一个使用 javascript Web SDK 的 Firebase 应用。我们的客户正在使用自定义身份验证方法。我们使用 onDisconnect 实现了一个存在系统。我们看到 onDisconnect 每小时触发一次,并且在大多数情况下客户端实际上并没有断开连接。这对我们来说是一个问题,因为我们正在为客户端跟踪和呈现连接/断开连接事件,这使得客户端看起来像是在断开连接,而实际上它们并未断开连接。

我的猜测是,每小时都会发生某种身份验证 token 刷新,这会导致 onDisconnect 触发。但是,我不知道如何深入挖掘以确认这一点或找到不同的根本原因。谁能帮我解决这个问题吗?

有人认为这是 this question 的重复项,但这是关于基本的 onDisconnect 操作,这是关于可重复的观察,尽管客户端尚未断开连接,但 onDisconnect 每小时触发一次。

最佳答案

我不知道这个onDisconnect函数是如何实现的。解释一下如何确定断开连接会很有帮助。 Firebase Id token 每小时过期,需要刷新(调用任何用户方法后自动刷新)。如果您使用实时数据库,它们将尝试在过期时刷新。您可以在 token 颁发时在 onAuthStateChanged 中添加监听器,并设置一个定时器,在 token 过期前自动刷新 token (getToken(true)),确保不会断开连接触发器。

此外,onDisconnect 在断开连接期间将会失败,因为 Firebase 认为 token 已过期。

关于javascript - 为什么 Firebase onDisconnect 每小时触发一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40315679/

相关文章:

javascript - 使用 Node.js 将文件上传到 Firebase 存储

javascript - 如何使用 firebase 按降序在我的无限滚动中首先显示我的热门帖子?

android - 使用 Firebase 无效 Idp 响应的 Google 登录

javascript - 如何关闭并稍后在 D3.JS 中添加 HTML 元素?

php - Javascript crc32 函数和 PHP crc32 与 UTF8 不匹配

javascript - 清理 `child_added` 内的 Firebase 事件处理程序?

android - Firebase 搜索查询不适用于 Android

java - 从 Firebase 获取 Parcelable

javascript - 将 div 替换为另一个 if 语句

javascript - 无法从 Firebase 数据库 Node.js/JavaScript 获取数据