ガン0.8.8、Node.jsのツーのNode.js、Node.jsのツーブラウザノードを更新中に重複を受け取るのはなぜですか?ここで
は、私は地元の削除クリーンなスタートを行うにjsfiddle https://jsfiddle.net/sergibondarenko/tktodk62/20/
におけるフロントエンドのシミュレーションですChromeローカルストレージのdata.json
とgun
のデータ
はまた
v: { _: { '#': 'j948ewfltvmmHthoESzM', '>': { num: 1508766155692 } },
num: 0 }
k: stats
良い、予想通り1件の結果を取得します
const gun = new Gun({peers:['http://localhost:8080/gun', 'http://localhost:8081/gun']});
const node = gun.get('watcher/f0de26c0-a29f-11e7-8661-154b982951a4');
node.on(function (v, k) {
console.log('v:', v);
console.log('k:', k);
});
は、Node.jsの
const node = gun.get('watcher/f0de26c0-a29f-11e7-8661-154b982951a4');
node.get('stats').on(function (v, k) {
console.log('v:', v);
console.log('k:', k);
});
に聞くのNode.js
にノードを作成し、私がリスナーを持っていますブラウザ側で<!DOCTYPE html>
<html>
<script src="http://rawgit.com/amark/gun/master/gun.js"></script>
<body>
<script>
var gun = new Gun({peers:['http://localhost:8080/gun', 'http://localhost:8081/gun']});
var node = gun.get('watcher/f0de26c0-a29f-11e7-8661-154b982951a4');
node.get('stats').on(function (v, k) {
console.log('v:', v);
console.log('k:', k);
});
</script>
</body>
</html>
そして予想通りノード作成に1つの結果を得る、良い
index.html:9 v: {"_":{"#":"j949102jDUdSklGduZh8",">":{"num":1508767186838}},"num":0}
index.html:10 k: stats
その後、私はノードを更新
const node = gun.get('watcher/f0de26c0-a29f-11e7-8661-154b982951a4');
node.put({
stats: {
num: 2
},
name: 'trex'
});
そしてノード
両方のリスナーに重複結果を受け取ります.js
v: { _: { '#': 'j949102jDUdSklGduZh8', '>': { num: 1508769723940 } },
num: 2 }
k: stats
v: { _: { '#': 'j949102jDUdSklGduZh8', '>': { num: 1508769723940 } },
num: 2 }
k: stats
ブラウザ
index.html:9 v: {"_":{"#":"j949102jDUdSklGduZh8",">":{"num":1508769723940}},"num":2}
index.html:10 k: stats
index.html:9 v: {"_":{"#":"j949102jDUdSklGduZh8",">":{"num":1508769723940}},"num":2}
index.html:10 k: stats
は、なぜ私は重複を受けるのですか?
UPDATE
一つだけの銃ピアがあっても、重複があります。
はい、複数のピアhttps://github.com/amark/gun/wiki/porting-gunがある場合は重複しています。しかし、唯一のガンピースがあっても重複があります。非常に奇妙な、私はバグだと思う。 – trex
ストレージアダプタを使用している場合、ストレージアダプタはピアのように動作し、アップデートを再ブロードキャストしていると聞いています。 – Joe
@trex '.on(cb)'が複数回呼び出されることは、同じデータであっても、常に「正しい」動作とみなされます。だから、この答えを正しいものとしてマークしてください。同じデータを複数回取得することは確か迷惑になる可能性があるので、代わりに '.open(cb)'を使用することをお勧めします。文書の深さ全体を提供するなどの便利な機能がたくさんあります。https:/ /github.com/amark/gun/wiki/API#open。将来的には、どのように騒がしい '.on(cb)'を減らそうとしますが、今は必要です。 – marknadal