Firebase观察者实际上是做什么的?

3

假设这个观察者在应用程序启动时创建

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

幕后发生了什么?应用程序如何知道值何时更改?我所能想象的只有这个

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

你如何定义'成本',为什么要包含一个从未被调用的函数?你可能需要使用一个用例和更多数据(代码)来扩展你的问题,否则它可能会因为过于模糊而被关闭。 - Jay
感谢您的评论,Jay。我想知道Firebase观察者是如何工作的。observe函数背后的代码是什么? - Peter Tao
1个回答

10

Firebase客户端与其后端服务器保持着一个开放的套接字连接。当您附加监听器时,它会将这些信息发送到服务器,以便从那时起跟踪观察到的位置。服务器还会返回该位置上当前的值(或者没有值)。客户端将立即使用该值触发/调用您的完成块。

在此初始流程之后,每当位置上的值发生更改时,Firebase服务器会通过开放式套接字向客户端发送更新。当客户端接收到此类更新时,它将再次使用更新后的值(或者没有值)调用完成块。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接