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

    });

問題はおそらくカウントのローカル変数にあり、現在、ほとんどのユースケースでグラフは正常に機能しますが、多くの人がデータの送信を開始すると、カウントが順不同になることがあります

firebase のトランザクションを調べたところ、firebase のtotalカウントを正確に保つことができましたが、これがクライアントがカウンターを正しくインクリメントするのにどのように役立つかわかりません。

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 に答える