我使用 firebase-js-sdk(在 Vue PWA 中)来监听来自 Firestore 的实时更新。
为了在后台恢复应用程序,我使用“vuex-persist”作为应用程序状态。除了应用程序状态之外,我还需要通过在具有相同参数的同一集合上调用 .onSnapshot 来重新建立实时查询。
我想知道 firebase-js-sdk 是否能够重用实时查询,这是在应用程序进入后台之前请求的。否则,每次用户切换到后台和返回时,我都会被收费。
感谢您的帮助,托马斯
我使用 firebase-js-sdk(在 Vue PWA 中)来监听来自 Firestore 的实时更新。
为了在后台恢复应用程序,我使用“vuex-persist”作为应用程序状态。除了应用程序状态之外,我还需要通过在具有相同参数的同一集合上调用 .onSnapshot 来重新建立实时查询。
我想知道 firebase-js-sdk 是否能够重用实时查询,这是在应用程序进入后台之前请求的。否则,每次用户切换到后台和返回时,我都会被收费。
感谢您的帮助,托马斯
解决方案:问题不在于如何使恢复(包括实时侦听器的恢复)在技术上正常工作。我主要感兴趣的是如何避免每次发生实时监听器的恢复时都被收费。
根据这两个答案:
如果满足以下先决条件,我将不会被收费:
您应该在 main.js 或基本上在应用程序启动或带到前台时始终启动的页面中初始化 Firebase,这样即使您的侦听器在您再次进入前台时分离,Firebase 也会启动,因此新的侦听器可以被创建。
所以在你的 main.js 中你会有类似的东西:
import Firebase from 'firebase'
let config = {
apiKey: "...",
authDomain: "...",
databaseURL: "...",
storageBucket: "...",
messagingSenderId: "..."
};
let app = Firebase.initializeApp(config)
let db = app.database()
let booksRef = db.ref('books')
//....etc///
如果你有正确的设置并在每次加载页面时运行的方法中设置你的监听器,你总是有一个监听器。只要确保避免创建多个侦听器即可。