2013-04-23 160 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