【发布时间】:2019-05-31 03:19:54
【问题描述】:
事件侦听器是否保证曾经写入路径的所有数据最终都会传送到客户端? 例如,如果我有一个游戏客户端一个接一个地将移动推送到同一路径,监听客户端会收到所有更新吗? 在这种情况下会发生什么:客户端 A 将移动 1 推送到客户端 B 正在侦听的 game1/user1/move_data;客户端 A 然后立即推送另一个移动,更新 game1/user1/move_data 的值。 是否保证监听客户端收到所有推送的动作?
目前我有一个系统,每次移动都会创建一个新路径,然后我在每次移动时调用单个侦听器,因为每个客户端在其状态下到达该移动。好像客户端 A 接收到客户端 B 所做的最新移动,然后客户端 A 开始侦听尚不存在的路径,这似乎效率不高。
以下引用来自此链接:https://firebase.google.com/docs/database/admin/retrieve-data
" value 事件用于读取给定数据库路径中内容的静态快照,因为它们在读取事件时就存在。它与初始数据一起触发一次,并在每次数据更改时再次触发。事件回调传递一个包含该位置所有数据的快照,包括子数据。在上面的代码示例中,value 返回了您应用中的所有博客文章。每次添加新博客文章时,回调函数将返回所有帖子。”
在读取事件发生时它们存在的部分让我认为,如果侦听器在路径上,那么客户端最终将收到该路径上的所有值。
我正在努力破译的保证部分中的这一行:
“值事件总是最后触发,并保证包含在拍摄快照之前发生的任何其他事件的更新。”
我正在使用一种没有基于 Google 的 sdk 的语言并提出这个问题,因此我可以进一步评估 Firebase 是否适合我的使用。
【问题讨论】:
-
我运行了一些测试,似乎所有更新都在客户端收到。我没有发布答案,因为我不知道为什么会这样。如果连接丢失也一样吗?如果有人在该路径上侦听或多个客户端在该路径上侦听并且它们断开连接,Google 是否会将更新之前的先前值传递给另一个工作人员?
标签: firebase firebase-realtime-database