2013-04-23 98 views
0

場景:運行事務。Firebase事務延遲

我認爲有關交易是否已提交的信息應該與其他客戶端上的「價值」事件大致同時接收。這似乎並非如此(延遲100多毫秒)。這是預期的行爲(如果是這樣,我如何衡量差異)還是我做錯了什麼?

的CoffeeScript代碼

# CLIENT 1 
ref.transaction (-> 1), (e, c, d) -> 
    console.log "I'm first!" if c 

# CLIENT 2 
ref.on 'value', (d) -> 
    console.log "I'm much later" 

here's an example (run this in two windows next to each other)
紅圈(交易)趕上藍圈(套)

回答

2

除非它是一個備受爭議的火力地堡的位置(例如超過10萬用戶同時嘗試交易()相同的位置),不應該有這種類型的延遲。另外請注意,Firebase目前僅在美國部署。我們將在不久的將來在全球範圍內推出,但網絡延遲也可能在這裏發揮作用。

Here's a simple example counter that uses transactions - 試試從多個瀏覽器中查看連接的延遲情況。我的連接無法察覺等待時間。

+3

[this shows the difference](http://jsfiddle.net/bu65e/5/)。紅圈正在做'交易',藍圈正在'設置'。在兩個不同的窗口或瀏覽器中運行此操作,您將看到紅色圓圈始終處於追趕狀態。 – redka 2013-04-24 07:37:35

+1

鑑於我們提供的擔保和數據一致性承諾,看起來正確的交易肯定會更昂貴。我們將繼續優化這樣的領域,但目前,示例代碼中顯示的行爲是預期的。 – Vikrum 2013-04-24 20:35:47

+0

剛剛來到這裏 - 在這些評論發佈兩年後 - 從第一條評論中,在幾個瀏覽器窗口中加載了jsFiddle。圓圈一致移動。至少,我看不到任何視覺差異 - 非常低的延遲。很漂亮。 – lilbyrdie 2015-07-28 18:33:54