2

我正在尝试gun在服务器端渲染 (SSR) 上下文中使用,并注意到我开始在map回调中接收到重复项。重复计数是n,其中n是我刷新页面的次数。

我做了一些探索,并意识到我正在gun为对我的服务器的每个请求生成一个实例。因此,基本上每个请求都会创建一个新的对等点,因此会为网络map中的每个节点返回每个节点的副本peer

这是预期的行为吗?

4

1 回答 1

1

是的,默认情况下 gun 是点对点 (P2P),这意味着每个对等点(甚至通过其他对等点连接的对等点)都将尝试回复请求。

为什么?如果您没有运行集中式服务器(您可以使用 gun,但您也不必这样做),则无法保证如果 1 个对等方回复他们拥有您想要的最新或所有数据。

但是,您是对的,为每个服务器请求创建一个新的枪支数据库实例......是不必要的。这能回答问题吗?

另请注意: map订阅表和其中的项目(添加时)。这意味着将为表/列表中的每个项目调用 map (因为它们甚至在将来都会添加),并且当一个项目更新时,它将再次为该项目调用。

如果您只想获取每个项目一次,map().val(cb)但仍会为添加的新项目调用此方法。只是每个项目,只有一次。

于 2017-01-15T01:29:50.147 回答