1

任何人都可以帮助分析这些代码在实时分布在多人之间的效果如何?我希望所有用户都能够更新实时图表并向其发送值。

每个客户端都有一个本地计数器变量:

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();

    });

问题可能出在 count 的局部变量上,目前该图适用于大多数用例,但是当很多人开始发送数据时,有时计数会变得乱序

我查找了 firebase 的交易,我可以total准确地计算 firebase,但我不明白这将如何帮助客户正确地增加他们的计数器。

4

1 回答 1

2

客户端可以直接调用事务方法。

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;
});
于 2014-03-11T20:25:49.607 回答