假设客户端 1 有:
messagesRef = new Firebase('https://yvv2pmvobjc.firebaseio-demo.com/');
messagesRef.on('child_changed',
function (data, prev) { alert ("Changed " + data.val()); } ); `
假设客户端 2 有:
messagesRef = new Firebase('https://yvv2pmvobjc.firebaseio-demo.com/');
Firebase.goOffline();
item = messagesRef.child('baz');
item.set("1");
item.set("2");
item.set("3");
Firebase.goOnline();
此代码将生成包含 Change 1、Change 2 和 Change 3 的通知。我希望它简单地返回 Change 3,而不处理中间步骤。我希望客户端 1 根本不将中间步骤发送到远程 Firebase。有办法实现吗?
最佳答案
继续我的评论并扩展安德鲁的......
假设您有两个客户端 A 和 B。客户端 B 负责更新“Baz”,而 A 只是监听。有几种情况需要考虑。
客户端 A 和 B 均已连接 - B 多次更新“Baz”,A 几乎实时接收所有这些更新。
客户端 A 保持在线,但 B 离线(代码中概述的场景) - A 仍与 Firebase 连接,因此正在等待更新。 B 处于离线状态,因此对“Baz”的更新由本地 Firebase 脚本排队。 B 上线并触发 Firebase 更新。 A 仍然在线并正在监听,因此它几乎实时接收所有这些更新。
客户端 A 离线,而 B 保持在线。 B 多次更新“Baz”。 “Baz”的最终值为“4”,过了一会儿,A上线了。当 A 上线时,Firebase 只会向其发送 Baz 的最新值,因为 A 不在线并且在中间更新发生时监听。
最后,如果客户端 A 和 B 都离线,那么 B 会将其更新排队,这实际上取决于哪一个首先上线来弄清楚会发生什么。在这种情况下,它会演变成其他场景之一。
关于firebase - 停止 Firebase 排队的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21103691/