angularjs - 我的 firebase 连接测试触发已连接和已断开连接

标签 angularjs ionic-framework firebase firebase-authentication

我正在使用 firebase 连接 connection test如果用户已断开连接,则检测脚本会显示模式,但由于某种原因,当应用程序加载时,它会触发两种情况,并且即使已连接,也会显示已断开的模式。我做错了什么。

var firebaseRef = new Firebase(FIREBAE_URL);
firebaseRef.child('.info/connected').on('value', function(connectedSnap) {
  if (connectedSnap.val() === true) {
    console.log("connected");
  } else {
    console.log("not connected");
    setTimeout(function(){
      $ionicPopup.show({
        title: 'Network is either down or poor wifi',
        template: 'Either pay for some wifi or go to a cafe',
        buttons: [{
          text: '<b>ok</b>',
          type: 'button-positive'
        }]
      });
    }, 8000)

  }
});

最佳答案

当您首次创建 Firebase 客户端时,它会开始建立与服务器的连接。这可能需要一些时间。在连接完全建立之前,客户端不会连接。它会触发 .info/connected 中的 false 值。

每当用户失去连接时显示模式对话框可能是一种糟糕的用户体验。移动设备上的网络连接经常会令人惊讶地下降,而 Firebase 可以轻松地保护用户免受短暂中断。显示模式对话框就像在他们面前尖叫“你离线了,我们都完了,你没有互联网”。很难说是一次愉快的经历。

.info/connected 的一个更典型的用法是显示一个不太显眼的指示器,例如一个小状态图标。或者,如果用户离线一段时间,您可以显示一个模式。

关于angularjs - 我的 firebase 连接测试触发已连接和已断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34997129/

相关文章:

angularjs - 在 API 中上传文件出现错误 400

css - 分页列布局

angularjs - 如何在 AngularJS 中使用 ng-repeat 创建嵌套结构

angularjs - 我自己的 Angular Material 用户界面样式

javascript - 如何使用 "this"调用事件内的函数

android - Ionic 应用程序中的 "cordova already defined"

firebase - Flutter:Firebase Realtime 从对象列表中删除对象

android - 如果我对 apk 进行逆向工程,我可以使用 REST API 访问 Firebase 数据库吗?

angularjs - ionic : Reverse Geocoding

android - 仅在 recyclerview 新项目出现时启动声音