Firebase onDisconnect when turning WIFI off



我注意到当我设置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时,db 设置为false,除非我等了大约1分钟。当我重新打开Wi-Fi时,db 设置为false。

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

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

2)事件将在套接字超时或断开连接时触发(时间长度完全取决于浏览器/服务器协商(1分钟不是不合理的)

3)在建立onDisconnect和事件触发之间,Firebase中的一些数据更改使其无效(安全规则不允许,因为op不再有效)

看到你的onDisconnect()火快一点,尝试使用goOffline(),我相信这将正确关闭套接字连接。

最新更新