我有一个使用 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/