4

我是 GUN 的新手,我正在从事的项目看起来很有希望。我无法实现的一件事是将浏览器对等体上的数据限制为仅使用 on() 请求或订阅的数据。以下示例是我非常简单的测试设置:我有两个不同的“对话”,每个对话都由一个不同的数据节点表示。一个浏览器获取并放入“蓝色”数据节点,另一个浏览器获取并放入“红色”节点。两个浏览器都同步到一个服务器对等点。我希望服务器对等方存储所有数据的副本,并且每个浏览器只存储它订阅的数据。使用版本 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 应该包含两个节点的数据。

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

谢谢您的帮助!

4

0 回答 0