2017-01-10 25 views
2

我在服务器端呈现(SSR)上下文中使用gun进行了实验,并注意到我开始接收map回调中的重复项。重复计数是n,其中n是我刷新页面的次数。预计“map”会多次返回一个节点的行为? (即重复)

我做了一些周围的事情,并意识到我为我的服务器的每个请求产生了一个gun实例。所以基本上每个请求都会创建一个新的对等体,因此map会为网络中的每个peer返回一个重复的每个节点。

这是预期的行为?

回答

1

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

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

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

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

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