这个问题是关于制作多个
对Firebase的观察请求。我在标题中澄清了这一点。
请注意,链接的问题是关于提出许多相似但不同的观察请求。
(非常具体地说,在另一个问题上,FBase工程师解释说>嵌套<请求是巧妙处理的,这很好。我问的是2个或更多相同的。)
我刚刚对Firebase设备内开发有了一个了不起的认识,
所以,虚线箭头实际上是:
let path = "blah/\(user)/price/123123123"
addRef = Database.database().reference(withPath: path)
addRef!.observe(.childAdded) { snapshot in
....
....
}
无处不在,您需要在应用的多个屏幕或过程中使用值"price/123123123"
。
在示例中:
A
和B
都需要知道"price/123123123"
。
在我的示例中, A
和B
执行此操作:
let path = "blah/\(user)/price/123123123"
addRef = Database.database().reference(withPath: path)
addRef!.observe(.childAdded) { snapshot in
....
....
}
这两个请求完全相同。
关键问题:
在该示例中,Firebase知道 实际上只知道一个实际连接,或者它是否更愿意建立两个连接?
所以:标记为黑魔法的部分实际上只有关于price/123123123
的 一个 连接,它会知道服务这两个回调
相反,Firebase采用让我们说KISS的方法,在标记为黑魔法的部分的例子中,关于price/123123123
的两个连接,每个都会服务一个A和B。
这两种方法都很棒,但是,取决于FBase的功能,它会彻底改变应用程序级别的修补体系结构。
这是什么?
答案 0 :(得分:2)
从客户端应用程序与Firebase实时数据库的所有通信都通过单个websocket进行维护。您可以根据需要设置尽可能多的侦听器/观察器,并通过该单个套接字传输所有数据。如果同一位置有两个侦听器,则不会重复数据 - 数据只会被传输一次并分发给所有侦听器。