20

我了解在 Firebase 中,我可以使用“on”方法注册我的页面以进行回调。

根据他们的文档:

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

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

我的问题是:

它是如何工作的 ?

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

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

一个答案可能是它是“轮询”。但是我在 Firebase 文档或配置轮询时间的属性中没有看到有关这种方法的参考...

有人知道吗?

非常感谢

4

1 回答 1

35

Firebase 使用WebSockets允许服务器将数据“推送”到客户端。由于并非所有浏览器版本都支持 WebSockets,因此它也回退到对这些浏览器的长轮询

在服务器上如何工作的实现细节是专有的和复杂的——足以写一本关于 SO 问题范围和范围之外的书。从逻辑上讲,它的工作方式与宣传的完全一样:该服务被设计为在任何时候调用 set()、push() 或 update()(或 REST 等价物)时,它都会通知任何侦听器有关更改。

无论浏览器是否使用 WebSockets,都没有“轮询时间”,因为客户端不会重复联系服务器。长轮询意味着等待数据更改发生,而不是重复轮询以查看是否发生更改。正如您通过试用本教程或任何实时示例所看到的,数据更改会在几毫秒内同步到所有客户端——无需配置。

于 2013-09-05T16:17:36.357 回答