如何将存储在GUN.js浏览器对等体上的数据限制为他们仅订阅的数据?

时间:2017-12-09 07:02:57

标签: gun

我是GUN的新手,对我正在进行的项目看起来非常有前途。我无法实现的一件事是将浏览器对等体上的数据限制为仅使用on()请求或订阅的数据。以下示例是我非常简单的测试设置:我有两个不同的#34;对话",每个都由一个不同的数据节点表示。一个浏览器获取并放入"蓝色"数据节点,另一个浏览器获取并放入" red"节点。两个浏览器同步到一个服务器对等体。我希望服务器对等体存储所有数据的副本,每个浏览器只存储它所订阅的数据。使用版本0.9.2。

在Browser1上,我运行以下命令:

var peers = ['http://localhost:8080/gun',];
var gun = Gun(peers);
var blue = gun.get('blue');
blue.on(data => console.log('Blue update!', data.message));

在Browser2上,我运行以下命令:

var peers = ['http://localhost:8080/gun',];
var gun = Gun(peers);
var red = gun.get('red');
red.on(data => console.log('Red update!', data.message));

服务器节点运行:

var http = require('http');

var server = http.createServer();
var Gun = require('gun');
var gun = Gun({web: server});

server.listen(8080, function () {
  console.log('Server listening on http://localhost:8080/gun')
})

然后我使用每个浏览器对等体的控制台将一些数据发布到它订阅的节点。我希望每个浏览器的本地存储应该只包含它所订阅的节点的数据,而服务器的data.json应该包含两个节点的数据。

我看到服务器正在按预期存储所有数据,但在查看本地存储时,我发现浏览器也存储了所有内容,甚至是他们从未请求过的数据。这是预期的行为,还是我错过了什么?我认为浏览器对等体只存储他们订阅的数据。虽然服务器对等体在故障的情况下复制数据以保持冗余是有意义的,但我不希望我的应用程序客户端自己存储他们不属于的无数对话。

感谢您的帮助!

0 个答案:

没有答案