如何仅使用DHT WebRTC对等方在浏览器中启动IPFS?

问题描述

我正在浏览器中使用此代码。它似乎通过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配置选项,这使您可以指定要侦听的远程WebRTC地址,并删除/更改Bootstrap节点以进行初始连接。您可以在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查询时间有很大影响。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...