问题标签 [gun]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1484 浏览

javascript - 如何仅将 Gun Server 用作中继?

有没有办法将 GUN 服务器设置为仅中继?换句话说,有没有办法确保数据仅点对点共享?服务器仅充当信号(STUN 样)服务器。在我完成的几个测试中,我似乎看不到数据是 P2P 的,而且似乎只通过枪支服务器。

我想确保服务器上没有客户端数据库数据。显然,连接信息和可能的数据库名称会在那里。

谢谢你。

0 投票
1 回答
34 浏览

gun - 澄清未设置的行为

我想澄清我对 unset() 或更确切地说是我观察到的行为的理解。我知道如果我调用 unset() 它会用 null 替换值(根据 Gun 中的删除数据)。所以这就是我想确认的,假设你调用了 unset():

1) 当您调用 once() 或 on() 时,它会为未设置的节点返回 null()

2) 当你调用 Gun.obj.empty(table, '_') 它返回 false

我还尝试将我的 set 的值设置为 null 例如

get('mylist').put(null)

哪个有效!我想清空我的集合。但是,下次我添加一个新节点时,我的原始集合以及所有原始节点都被恢复了。我最终写了以下内容来清空我的集合

0 投票
1 回答
290 浏览

gun - 如何使用 Gun 实现无损 CRDT?

如何使用 Gun 创建 CRDT?

例如,如果我想实现一个只增长的数组,其中每个元素都指向下一个元素,我该如何解决冲突?

为简化起见,让我们创建一个 Alice 和 Bob 合作的场景。

该数组包含 3 个元素,[a, b, d].

这个数组的内部表示将是一个像这样的链表:

(当然,内部表示形式类似于{value: 'a', next: { value: 'b' next: { value: 'c' }}}),但我认为您使用更简洁的表示法理解了我的观点。

Alice 现在想在和c之间插入元素。bd

同时,Bob 想要在和C之间插入元素。bd

同时,它们具有数组的这种内部表示:

爱丽丝:a => b => c => d

鲍勃:a => b => C => d

当他们加入 CRDT 时,他们将收敛到以下值之一:

a => b => c => C => d

或者

a => b => C => c => d

无论如何,a)它们都将收敛于相同的值,并且 b)它们不会丢失彼此的数据。

我们可以使用 Gun 来实现这一点吗?

(这个问题是对https://github.com/amark/gun/issues/602的简化和后续问题)

0 投票
1 回答
70 浏览

graph - 如何订阅整个枪图的变化?

我想知道是否有一种方法可以观察整个图表的变化,而不是订阅一个特定节点上的变化。我无法在 gun.eco/docs 上阅读 Docs/Howtos 找到答案

假设您构建了一个实时思维导图应用程序,因此基本上是一个图形/树结构。

  1. 如果我在某个地方添加一个新节点到图表中,我想更新我的 UI
  2. 如果我删除一个节点或整个子树......

2. 场景是一个普遍关注的问题:

如何删除多个节点以及所有相关边?

0 投票
1 回答
650 浏览

node.js - gundb.once 的回调调用错误消息:错误:尚未收到 ACK

我在 node.js 中试用了 gundb。调用 get 两次后调用一次会导致错误。我在节点控制台中执行了以下操作:

我收到以下错误:

0 投票
1 回答
416 浏览

erlang - 如何使用 gun:open 在 gen_server 模块中

我有一个 gen_server 模块,我使用 gun 作为 http 客户端与 http 服务器建立长拉连接,所以我在模块的 init 中调用 gun:open,但是如果 gun:open 失败,我的模块失败,所以我的应用程序失败开始。这样做的正确方法是什么。以下是我的代码:</p>

0 投票
1 回答
61 浏览

gun - 更新客户端中的同步更改

我已经让 Gun 在几个客户端之间同步。一方面,我使用map().on()订阅数据。另一方面,我使用map().unset()删除了一个项目。我的问题是,当我删除一个项目时,另一个客户端上的更改会弹出为null - 我似乎没有任何其他信息。那么是否可以让我的客户与更改保持同步,即在这种情况下从我在屏幕上显示的列表中删除该项目?我不知道 null 指的是哪个项目。

谢谢!

0 投票
1 回答
1115 浏览

gun - 在会话期间保持 Gun DB 用户的身份验证

我正在跟踪分布式/无服务器应用程序的 Gun/SEA 身份验证系统。当 Gun 用户通过身份验证时,此应用程序正在将会话信息保存到本地存储。我遇到的一个问题是,当刷新页面或打开新选项卡时,我希望在会话有效时保持用户身份验证,并且由于 XSS 和物理安全原因,我宁愿不将用户名和密码存储在本地存储中. 目前有解决这个问题的方法吗?我认为 sessionStorage 可能会更好,但它仍然存在一些相同的安全问题,例如将用户名和密码存储在攻击者可能获取的位置,并且在打开新选项卡时需要用户登录。

0 投票
1 回答
1784 浏览

gun - 如何使用 gundb 存储图像/视频文件?

我知道传统的方法是将图像/视频文件存储在一个地方,然后将参考索引保存到 db 的表中。

现在我在学习gundb,我可以很容易地存储key-value json类型的数据,但是由于它是分散的,如果我想做一个说聊天室的应用程序,我应该如何处理图像存储(例如:用户的头像)?

我也想知道是否可以使用 gundb 制作电影共享应用程序?

0 投票
1 回答
234 浏览

gun - 访问 gundb 链中的先前值

get在 gundb 中,链式查找节点很方便。

例如:

grandparent.get("children").map().get("children").map().once(function(grandchild,id) {...})

然而,函数是在孙子的上下文中调用的。如果我想获得对父节点(或任何其他中间节点)的引用怎么办?

最简单的方法是分解查询:

但这似乎没有必要。我也尝试添加一个map()将当前值存储到的函数this,但这看起来很丑陋。

是否有一种首选的方式来保留或访问先前链式获取的状态?