gpt4 book ai didi

关闭 WIFI 时 Firebase onDisconnect

转载 作者:行者123 更新时间:2023-12-03 00:25:55 26 4
gpt4 key购买 nike

我注意到,当我设置 onDisconnect()、在另一台计算机上点击我的应用程序并关闭 WIFI 时,我的数据库没有更新;但是,当我重新打开 WIFI 时,它会更新。这让我很担心,因为我正在构建一个包含预期移动用户的应用程序,并且我想优雅地处理临时连接丢失。

另一方面,/.info/connected 立即知道断开和连接。

任何人都可以解释为什么会发生这种情况,以及是否有办法防止重新建立连接后发生断开连接?

更新的代码:

      var connectedRef, userRef;
connectedRef = new Firebase('https://{fb}/.info/connected');
userRef = new Firebase('https://{fb}/users/myUser');

connectedRef.on('value', function (snap) {

if (snap.val()) {
userRef.update({ online: true });
userRef.onDisconnect().update({ online: false }, function () {
console.log('Turn the Wi-Fi off after seeing this log.');
});
}

});

结果: 当我关闭 Wi-Fi 时,数据库不会在线设置为 false,除非我等待大约 1 分钟。当我重新打开 Wi-Fi 时,数据库确实在线设置为 false。

最佳答案

关闭 wifi 并不能有效地关闭套接字。因此,服务器必须等待套接字超时才能触发onDisconnect。由于这完全是服务器端过程,因此唯一可能的结果是:

1) 不允许用户执行 onDisconnect 操作(在建立 onDisconnect 后立即在回调中指示)

2)当socket超时或断开连接时,该事件将会触发(时间长短完全由浏览器/服务器协商决定(1分钟也不是没有道理)

3) 在建立 onDisconnect 和事件触发之间,Firebase 中的一些数据发生了变化,导致其无效(安全规则不允许这样做,因为操作不再有效)

要看到 onDisconnect() 触发得更快一点,请尝试使用 goOffline(),我相信它会正确关闭套接字连接。

关于关闭 WIFI 时 Firebase onDisconnect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24767575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com