我有一个使用javascript网络SDK的Firebase应用。我们的客户使用的是自定义身份验证方法。我们已经使用onDisconnect实现了一个在线状态系统。我们看到onDisconnect每小时触发一次,并且在大多数情况下,客户端实际上并未断开连接。这对我们来说是个问题,因为我们正在跟踪和呈现客户端的连接/断开事件,这使客户端看起来好像在断开连接时就断开了。
我的猜测是,每小时都会发生某种身份验证令牌刷新,这会导致onDisconnect触发。但是,我不知道如何更深入地确认这一点或找到其他根本原因。谁能帮我解决这个问题?
有人建议这是this question的副本,但这与基本的onDisconnect操作有关,这是有关可重复观察到的,尽管客户端尚未断开连接,但onDisconnect每小时都会触发一次。
最佳答案
我不知道该onDisconnect
函数是如何实现的。解释您如何确定断开连接将很有帮助。 Firebase Id令牌每小时都会过期,需要刷新(调用任何用户方法后自动刷新)。如果您使用的是实时数据库,则它们将在到期时尝试刷新。您可以在颁发令牌时在onAuthStateChanged
中添加侦听器,并将计时器设置为在令牌(getToken(true)
)过期之前自动刷新,以确保断开连接不会触发。
此外,由于Firebase认为令牌已过期,因此在断开连接期间onDisconnect
将失败。
关于javascript - 为什么Firebase onDisconnect每小时触发一次?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40315679/