Firebase 观察者实际上做了啥?

Posted

技术标签:

【中文标题】Firebase 观察者实际上做了啥?【英文标题】:What does a Firebase observer actually do?Firebase 观察者实际上做了什么? 【发布时间】:2017-03-16 19:49:03 【问题描述】:

假设这个观察者是在应用启动时创建的

ref.observe(.value, with:  (snapshot) in
    // do something
)

幕后发生了什么?应用程序如何知道值何时发生变化?我能想象的就是这个

while (true) 
    ref.observeSingleEvent(of: .value, with:  (snapshot) in
        // if value is different do something
    )

【问题讨论】:

你如何定义“成本”,如果函数从未被调用,为什么还要包含它?您可能想用一个用例和更多数据(代码)来扩展您的问题,否则它可能会因为含糊不清而被关闭。 感谢杰伊的评论。我想知道 Firebase 观察者是如何工作的。观察函数背后的代码是什么? 【参考方案1】:

Firebase 客户端与其后端服务器保持打开的套接字连接。当您附加观察者时,它会将该信息发送到服务器,然后服务器将跟踪观察到的位置。服务器还发回该位置的当前值(或缺少的值)。客户端将立即使用该值触发/调用您的完成块。

在此初始流程之后,只要位置的值发生更改,Firebase 服务器就会通过打开的套接字向客户端发送更新。当客户端收到这样的更新时,它会使用更新的值(或缺少更新的值)再次调用完成块。

【讨论】:

以上是关于Firebase 观察者实际上做了啥?的主要内容,如果未能解决你的问题,请参考以下文章

打开新标签时,谷歌浏览器究竟做了啥?

在 Firebase 中启用持久性后实际会发生啥?

Firebase 移除观察者

在firebase中如何删除所有观察者,而不是特定参考的观察者

当从 Firebase 管理员(nodejs)推送孩子时,Firebase childAdded 观察者不会被触发

Swift:如果孩子的观察者被移除,则不会调用 Firebase 身份验证观察者