据我所知,在Firebase中我可以使用“on”方法注册我的回调页面。
根据他们的文件:
on()用于侦听特定位置的数据更改。 这是从Firebase读取数据的主要方式。
firebaseRef.on('value', function(dataSnapshot) {
// code to handle new value.
});
我的问题是:
它是如何工作的?
它如何知道服务器端的内容发生了变化?
(更好)服务器如何'回调'浏览器?
答案可能是“轮询”。但我在Firebase文档或属性中没有看到有关此方法的参考资料来配置轮询时间...
有人知道吗?
许多 感谢
答案 0 :(得分:28)
Firebase使用WebSockets允许服务器向客户端提供“push”数据。由于并非所有浏览器版本都支持WebSockets,因此对于这些浏览器,它也会回退到long polling。
在服务器上如何工作的实现细节是专有的和复杂的 - 足以写一本关于SO问题范围的书。逻辑上,完全按照宣传的方式工作:服务的设计使得无论何时调用set(),push()或update()(或REST等价物),它都会通知任何侦听器。
无论浏览器是否使用WebSockets,都没有“轮询时间”,因为客户端不会反复联系服务器。长轮询意味着等待数据发生更改,而不是反复轮询以查看是否发生了更改。通过尝试教程或任何real-time examples可以看到,数据更改会在几毫秒内同步到所有客户端 - 无需配置。