任何人都可以帮助分析这段代码在实时分配给多人的情况吗? 我希望所有用户都能够更新实时图表并向其发送值。
每个客户都有一个本地计数器变量:
var count = 0;
发送值:
$('#addValue').click(function(){
fbValues.push({ x: count, y: randomNum(30,60)});
});
倾听孩子加入firebase:
fbValues.on("child_added", function(snapshot) {
count += 1;
var x_coor = snapshot.val().x;
var y_coor = snapshot.val().y;
data.values.push({ x: x_coor, y: y_coor });
updateGraph();
});
问题可能在于计数的局部变量,目前这个图表适用于大多数用例,但是当很多人开始发送数据时,计数有时会不按顺序计算
我查找了firebase的交易,我可以对firebase的total
计算准确,但我不知道这将如何帮助客户正确增加其计数器。
答案 0 :(得分:2)
客户可以直接调用transaction方法。
var fb = new Firebase(URL);
var counterRef = fb.child('counter');
var valsRef = fb.child('values');
$('#addValue').click(function(){
counterRef.transaction(function(currentVal) {
return (currentVal||0)+1;
},
function(err, success, snap) {
fbValues.push({ x: snap.val(), y: randomNum(30,60)});
});
});
在本地,只需在计数器路径上听取更改:
var counter = 0;
counterRef.on('value', function(snap) {
counter = snap.val() || 0;
});