Firebase回调 - 底层触发器是什么?

时间:2013-09-05 14:22:38

标签: javascript asynchronous firebase

据我所知,在Firebase中我可以使用“on”方法注册我的回调页面。

根据他们的文件:

  

on()用于侦听特定位置的数据更改。   这是从Firebase读取数据的主要方式。

firebaseRef.on('value', function(dataSnapshot) {
  // code to handle new value.
});

我的问题是:

它是如何工作的?

它如何知道服务器端的内容发生了变化?

(更好)服务器如何'回调'浏览器?

答案可能是“轮询”。但我在Firebase文档或属性中没有看到有关此方法的参考资料来配置轮询时间...

有人知道吗?

许多 感谢

1 个答案:

答案 0 :(得分:28)

Firebase使用WebSockets允许服务器向客户端提供“push”数据。由于并非所有浏览器版本都支持WebSockets,因此对于这些浏览器,它也会回退到long polling

在服务器上如何工作的实现细节是专有的和复杂的 - 足以写一本关于SO问题范围的书。逻辑上,完全按照宣传的方式工作:服务的设计使得无论何时调用set(),push()或update()(或REST等价物),它都会通知任何侦听器。

无论浏览器是否使用WebSockets,都没有“轮询时间”,因为客户端不会反复联系服务器。长轮询意味着等待数据发生更改,而不是反复轮询以查看是否发生了更改。通过尝试教程或任何real-time examples可以看到,数据更改会在几毫秒内同步到所有客户端 - 无需配置。