【问题标题】:How to check if my RESTful API is connected to Firebase Realtime database如何检查我的 RESTful API 是否连接到 Firebase 实时数据库
【发布时间】:2021-09-11 16:21:22
【问题描述】:

我需要知道我的 API 中 Firebase 实时数据库的连接状态。我阅读了文档here,但我似乎无法让它像我需要的那样工作。

这是文档中的示例代码,

var connectedRef = firebase.database().ref(".info/connected");
connectedRef.on("value", (snap) => {
  if (snap.val() === true) {
    console.log("connected");
  } else {
    console.log("not connected");
  }
});

这个程序似乎只在regain连接时记录连接状态。我目前在我的设备上本地托管 API。这是发生的一系列事件。

(log) not connected
(log) connected
(I turn off my wifi and wait for a while)
(I turn it back on)
(log) not connected
(log) connected

我需要它在我关闭 wifi 后立即记录 not connected,即,

(log) not connected
(log) connected
(I turn off my wifi and wait for a while)
(log) not connected
(I turn it back on)
(log) connected

我该怎么做?提前致谢!

【问题讨论】:

  • 您使用node.js 标记。这是否意味着您共享的代码在 Node.js 中而不是在浏览器中运行?
  • 是的,它在 node.js 上运行

标签: node.js firebase express firebase-realtime-database


【解决方案1】:

正如您在上面猜到的,Firebase 的connectedRef 仅在重新获得连接时捕捉连接状态。 您似乎使用 window 的 navigator.onLine Web API 来监听 wi-fi 连接状态的变化。

试试这个伪代码sn-p:

window.addEventListener('offline', function(e) {
    console.log('offline');
    onWifiOfflineHandler();
});
window.addEventListener('online', function(e) { console.log('online'); });

...

function onWifiOfflineHandler() {
    var connectedRef = firebase.database().ref(".info/connected");
    connectedRef.on("value", (snap) => {
        if (snap.val() === true) {
            console.log("connected");
        } else {
            console.log("not connected");
        }
    });
}

onWifiOfflineHandler();

...

【讨论】:

  • 您好,感谢您的回答,但我使用的是node.js,这似乎是浏览器上下文js的代码
猜你喜欢
  • 2012-08-26
  • 1970-01-01
  • 2016-11-17
  • 1970-01-01
  • 2020-10-15
  • 2017-07-24
  • 1970-01-01
  • 2021-01-14
  • 1970-01-01
相关资源
最近更新 更多