我的应用面临的一个相当大的问题是,除非应用暂停,否则大约 50% 的启动没有 Firebase 连接。所以我会:
- 启动应用程序以不加载任何数据
- 暂停加载当前页面的数据
- 恢复查看数据。
- 每次需要发送或接收数据时,请重复步骤 2 和 3
代码:
var onPause = function(){console.log("paused");}
var onResume = function(){console.log("resumed");}
document.addEventListener("pause", onPause, false);
document.addEventListener("resume", onResume, false);
var connectionRef = new Firebase(FB + "/.info/connected");
connectionRef.on("value", function(snap){
if(snap.val() == true){
console.log("connected -------[]------");
} else {
console.log("not connected --------[ ]------------");
}
});
日志:
resumed
not connected --------[ ]------------
paused
connected -------[]------
resumed
not connected --------[ ]------------
paused
connected -------[]------
它一半时间有效的原因是因为它也以相反的方式工作,我认为这是预期的方式。有什么办法可以防止它完全断开连接吗?或者强制它在恢复时连接?
最佳答案
我找到了问题的原因 - 这是一个名为phonegap-plugin-push 的插件。当它注册 GCM 时,它会导致 Firebase 离线(如果暂停则在线)。
我仍然没有找到真正的解决方案,但作为一种黑客修复,我有一个注册 GCM 的计时器,这样数据就可以在断开连接之前首先加载。此后,它依赖于用户长时间不使用该应用程序,以便它可以暂停以定期同步。
关于javascript - Firebase 在 cordova 暂停时断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34053851/