Firebase 事件保证:事件顺序
Firebase Event Guarantee: Event Order
我刚刚开始使用 Firebase,对以下 URL 中列出的 Firebase 事件保证有疑问:
Event Guarantees.
保证之一是来自单个客户端的写入将始终写入服务器并按顺序广播给其他用户。
这种保证是否也意味着客户端将按照广播的顺序接收单个客户端广播的事件,或者是否有可能以不按广播顺序接收事件?
例如,如果一个客户端添加一个节点,然后向该节点添加一个子节点,我能保证其他客户端会以相同的顺序看到这些事件吗?
唯一的保证是值最终是一致的。仔细想想,这是唯一合理的答案。互联网上的任何操作都可能被过程中的任何移动部分无限期延迟,从而产生客户端接收到的无序事件,无论它们到达服务器的顺序如何。
因此,您可以保证所有客户端最终都会看到两个添加的子节点,并且它们将在所有客户端之间保持一致(最终)。
如果您想保证事件的顺序,您可以使用消息队列——这是对 Firebase 使用方式的一种改编,但不是唯一的改编。这可以使用 push() method 轻松实现,它创建按时间顺序排列的唯一 ID。
您还可以输入时间戳并使用 orderByChild 方法对记录进行排序。
我刚刚开始使用 Firebase,对以下 URL 中列出的 Firebase 事件保证有疑问: Event Guarantees.
保证之一是来自单个客户端的写入将始终写入服务器并按顺序广播给其他用户。
这种保证是否也意味着客户端将按照广播的顺序接收单个客户端广播的事件,或者是否有可能以不按广播顺序接收事件?
例如,如果一个客户端添加一个节点,然后向该节点添加一个子节点,我能保证其他客户端会以相同的顺序看到这些事件吗?
唯一的保证是值最终是一致的。仔细想想,这是唯一合理的答案。互联网上的任何操作都可能被过程中的任何移动部分无限期延迟,从而产生客户端接收到的无序事件,无论它们到达服务器的顺序如何。
因此,您可以保证所有客户端最终都会看到两个添加的子节点,并且它们将在所有客户端之间保持一致(最终)。
如果您想保证事件的顺序,您可以使用消息队列——这是对 Firebase 使用方式的一种改编,但不是唯一的改编。这可以使用 push() method 轻松实现,它创建按时间顺序排列的唯一 ID。
您还可以输入时间戳并使用 orderByChild 方法对记录进行排序。