当前位置 : 主页 > 手机开发 > 无线 >

关闭WIFI时FireStation onDisconnect

来源:互联网 收集:自由互联 发布时间:2021-06-10
我注意到当我设置onDisconnect(),在另一台计算机上点击我的应用程序,并关闭WIFI时,我的数据库没有更新;但是,当我重新打开WIFI时它会更新.这让我很担心,因为我正在构建一个具有预期移动
我注意到当我设置onDisconnect(),在另一台计算机上点击我的应用程序,并关闭WIFI时,我的数据库没有更新;但是,当我重新打开WIFI时它会更新.这让我很担心,因为我正在构建一个具有预期移动用户的应用程序,我想优雅地处理临时连接丢弃.

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

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

更新的代码:

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时,数据库确实将在线设置为false.

关闭wifi无法以有效的方式关闭套接字.因此,服务器必须等待套接字超时才能触发onDisconnect.由于这是一个完全服务器端的过程,唯一可能的结果是:

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

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

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

要查看你的onDisconnect()更快一点,请尝试使用goOffline(),我相信这将正确关闭套接字连接.

网友评论