2013-09-05 58 views
13

我知道在Firebase中,我可以使用「on」方法註冊我的頁面以進行回調。Firebase回調 - 底層觸發器是什麼?

根據他們的文檔:

上()被用於監聽在特定位置處的數據的變化。 這是從Firebase讀取數據的主要方式。

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

我的問題是:

它是如何工作的?

它如何知道服務器端的某些變化?

(好)服務器如何回調瀏覽器?

一個答案可能是「輪詢」。但是我在Firebase文檔或屬性中沒有看到有關此方法的參考以配置輪詢時間...

有人知道嗎?

許多 感謝

回答

24

火力地堡使用WebSockets允許服務器爲「push」數據到客戶端。由於並非所有的瀏覽器版本都支持WebSocket,所以這些瀏覽器也會回落到long polling

在服務器上工作的實現細節是專有和複雜的 - 足以編寫一本關於SO問題範圍的書。從邏輯上講,它的工作原理與廣告一樣:服務的設計使得每當set(),push()或update()被調用(或REST等價物)時,它都會通知任何監聽者這一變化。

無論瀏覽器是否使用WebSockets,都沒有「輪詢時間」,因爲客戶端沒有反覆聯繫服務器。長輪詢意味着等待數據更改發生,而不是重複輪詢以查看是否發生了更改。正如您通過試用本教程或任何real-time examples所看到的,數據更改將在幾毫秒內同步到所有客戶端 - 無需配置。

+1

這是公平的,實施細節是專有的,但你從哪裏知道它可以在WebSockets上運行,並且可以在長時間輪詢後退出...... – Zo72

+2

在這裏和郵件列表上有很多討論,還有一些聚會視頻,它們拼湊在一起畫出了一幅相當完整的協議圖片。 – Kato

+0

超級.......... – Zo72