假设在启动应用程序时创建此观察者
ref.observe(.value, with: { (snapshot) in // do something })
幕后发生了什么?应用程序如何知道值何时发生变化?我能想象的就是这个
while (true) { ref.observeSingleEvent(of: .value, with: { (snapshot) in // if value is different do something }) }
Frank van Pu.. 6
Firebase客户端与其后端服务器保持打开的套接字连接.当您附加观察者时,它会将该信息发送到服务器,从那时起将跟踪观察到的位置.服务器还会在该位置发回当前值(或缺少值).客户端将立即使用该值触发/调用您的完成块.
在此初始流程之后,只要该位置的值发生更改,Firebase服务器就会通过打开的套接字向客户端发送更新.当客户端收到这样的更新时,它会再次使用更新的值(或缺少值)调用完成块.
Firebase客户端与其后端服务器保持打开的套接字连接.当您附加观察者时,它会将该信息发送到服务器,从那时起将跟踪观察到的位置.服务器还会在该位置发回当前值(或缺少值).客户端将立即使用该值触发/调用您的完成块.
在此初始流程之后,只要该位置的值发生更改,Firebase服务器就会通过打开的套接字向客户端发送更新.当客户端收到这样的更新时,它会再次使用更新的值(或缺少值)调用完成块.