【问题标题】:How to start IPFS in browser by using only DHT WebRTC peers?如何仅使用 DHT WebRTC 对等点在浏览器中启动 IPFS?
【发布时间】:2020-12-21 02:33:01
【问题描述】:

我在浏览器中使用此代码。它似乎是通过 http 连接到 ipfs.io?我希望只连接到 DHT webRTC 对等点。我猜我需要将一些选项传递给 Ipfs.create?我在这里看到了一个自定义 libp2p 的示例,但选项的数量是压倒性的。 https://github.com/ipfs/js-ipfs/blob/master/examples/custom-libp2p/index.js

<script src="https://cdn.jsdelivr.net/npm/ipfs/dist/index.min.js"></script>
<script>
    (async () => {
        const node = await Ipfs.create()

        const data = 'Hello'
        const results = await node.add(data)
        console.log(results)
    })()
</script>

【问题讨论】:

    标签: ipfs


    【解决方案1】:

    您可以在创建实例时传递 IPFS 配置选项,这使您能够指定要侦听的远程 WebRTC 地址,并删除/更改初始连接的引导节点。您可以在https://github.com/ipfs/js-ipfs/blob/ipfs%400.49.1/examples/browser-exchange-files/public/app.js#L48 的文件交换示例中看到这一点。所以你的配置可能是这样的:

    const node = await Ipfs.create({
      config: {
        Addresses: {
          Swarm: [
            // These are public webrtc-star servers
            '/dns4/wrtc-star1.par.dwebops.pub/tcp/443/wss/p2p-webrtc-star',
            '/dns4/wrtc-star2.sjc.dwebops.pub/tcp/443/wss/p2p-webrtc-star'
          ]
        },
        // This removes the default IPFS peers to dial to. You can specify any known addresses you wish, or leave blank.
        Bootstrap: []
      }
    })
    

    正如您提到的 DHT,我只想指出,在 WebRTC 上运行 DHT 在小型隔离网络之外确实不可行。由于 WebRTC 拨号可能需要一些时间,这会对 DHT 查询时间产生巨大影响。

    【讨论】:

    • 谢谢,我尝试对其进行测试,但我不知道如何实际获取一些关于引擎盖下发生的事情的日志。如何控制台记录哪些对等方正在连接以及它们的状态等等,以便我可以验证您的答案是否有效?我确实尝试查看文档github.com/ipfs/js-ipfs/blob/master/docs/core-api/SWARM.md,但我没有看到要附加的事件。
    • 您可以直接连接到 libp2p,这将使您可以更多地访问这些类型的事件。 libp2p 可通过node.libp2p 访问,您可以查看文档github.com/libp2p/js-libp2p/blob/master/doc/API.md#events 中的可用事件。
    猜你喜欢
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 2020-10-18
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多