Firebase 检测节点环境中的连接状态未按预期工作

Firebase 检测节点环境中的连接状态未按预期工作,firebase,Firebase,在Web的脱机功能部分中,介绍了如何检测客户端是否连接到internet。然而,Firebase似乎并不是每次客户端在节点环境中运行时连接或断开连接时都调用事件处理程序。在浏览器中运行时,它会按预期工作,即每次客户端连接或断开与internet的连接时,它都会调用事件处理程序 看看这个。一旦您运行小提琴并连接或断开internet,您将在控制台中看到相应的“已连接”或“已断开”消息 我在节点中运行了下面的代码,这与我在浏览器中运行的代码完全相同。在节点环境中运行时,我观察到我收到了初始的“con

在Web的脱机功能部分中,介绍了如何检测客户端是否连接到internet。然而,Firebase似乎并不是每次客户端在节点环境中运行时连接或断开连接时都调用事件处理程序。在浏览器中运行时,它会按预期工作,即每次客户端连接或断开与internet的连接时,它都会调用事件处理程序

看看这个。一旦您运行小提琴并连接或断开internet,您将在控制台中看到相应的“已连接”或“已断开”消息

我在节点中运行了下面的代码,这与我在浏览器中运行的代码完全相同。在节点环境中运行时,我观察到我收到了初始的“connected”和“disconnected”消息,但如果我再次从internet连接和断开连接,则不会打印任何消息,这意味着不会调用事件处理程序

var Firebase = require('firebase');
var ref = new Firebase("<FIREBASE-APP>");

var connectedRef = ref.child(".info/connected");
connectedRef.on("value", function(snap) {
  if (snap.val() === true) {
    console.log("connected");
  } else {
    console.log("not connected");
  }
});
var Firebase=require('Firebase');
var ref=新的Firebase(“”);
var connectedRef=ref.child(“.info/connected”);
connectedRef.on(“值”,函数(捕捉){
if(snap.val()==真){
控制台日志(“已连接”);
}否则{
控制台日志(“未连接”);
}
});

我刚刚在系统的节点中运行了相同的脚本:

$ node connected.js
不相连

连接的

不相连

连接的

前两个来自脚本的初始开始。最后两条记录线是在我关闭笔记本电脑的wifi一分钟,然后再次打开之后出现的


Firebase客户端可能需要一段时间才能检测到与服务器的连接丢失,因此请耐心等待。所需时间的原因取决于您运行的环境(浏览器/节点),因为Firebase客户端依赖于该环境来提供WebSocket和检测超时。

感谢您的及时响应。我想我有点不耐烦了。我再次运行了脚本,在我的mac book上,检测到连接丢失平均需要约200秒。当我连接到互联网,它检测到,在几秒钟内,这是好的。但是,在浏览器中,这两个事件几乎都是即时检测到的。为什么在节点环境和浏览器中检测到连接丢失会有如此大的差异?在我的windows电脑上,检测到连接已断开大约需要50秒,比200秒还糟糕。我的Macbook air电脑只用了整整一分钟。这实际上取决于代码运行的操作系统和环境。我补充了更多的信息,好的。有道理。谢谢