使用 js-ipfs 在浏览器中发布的 IPNS 名称不会在网关或本地节点上解析

IPNS name published in browser with js-ipfs won't resolve on gateway or local node

我正在开发一个使用 js-ipfs 的浏览器应用程序。在我发布一个 ipfs 地址(例如 /ipfs/Qm...)之后,我成功地获得了返回的名称(即 /ipns/Qm..)。但问题是我无法在其他任何地方(本地节点的网关,public 网关等)解决它,但是在同一个浏览器应用程序中,这是非常有问题的...

如何解决?我认为这与浏览器不支持 DHT 有关,但不知道如何解决它...

您的节点需要能够被其他节点拨号,以便它们能够解析您的内容或 IPNS 名称等。对于浏览器,这意味着使用 WebRTC 传输并连接到 WebRTC 信令服务器。连接到同一信令服务器的其他节点将能够拨打您的节点。

请参阅 browser-exchange-files 示例,了解两个浏览器节点如何通过 WebRTC 信令服务器相互发现。

public 网关 运行 go-IPFS 还没有 WebRTC 传输,因此他们无法拨打您的节点来解析名称。

如果您希望您的 IPNS 名称在用户关闭浏览器后可解析,您需要确保它在某个地方的网络上传播,或者通过您自己控制一个长寿命的 go-IPFS 节点通过它的 HTTP API(请考虑此处的安全隐患)或使用 pinning service 让您创建 IPNS 名称。