微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在IPFS / libp2p中获取WebRTC对等方的IP地址?

如何解决如何在IPFS / libp2p中获取WebRTC对等方的IP地址?

我正在使用此代码在浏览器中使用IPFS。我想知道如何访问webRTC对等方的IP地址?甚至不知道这些同行实际上是webRTC还是http同行?

<script src="https://cdn.jsdelivr.net/npm/ipfs/dist/index.min.js"></script>

<script>
    (async () => {
        window.node = await Ipfs.create({
          config: {
            Addresses: {
              Swarm: []
            },Bootstrap: []
          }
        })
        window.node.libp2p.on('peer:discovery',(peer) => console.log('peer:discovery',peer))
        window.node.libp2p.on('peer:connect',peerInfo => console.log('peer:connect',peerInfo))
        window.node.libp2p.on('peer:disconnect',peerInfo => console.log('peer:disconnect',peerInfo))
        window.node.libp2p.peerStore.on('peer',(peerId) => console.log('peer',peerId))
        window.node.libp2p.peerStore.on('change:multiaddrs',({ peerId,multiaddrs}) => console.log('change:multiaddrs',{peerId,multiaddrs}))
        window.node.libp2p.peerStore.on('change:protocols',protocols}) => console.log('change:protocols',protocols}))
        window.node.libp2p.on('error',(err) => console.log('error',err))
        window.node.libp2p.connectionManager.on('peer:connect',(connection) => console.log('peer:connect',connection))
        window.node.libp2p.connectionManager.on('peer:disconnect',(connection) => console.log('peer:disconnect',connection))

        const data = 'Hello'
        const results = await window.node.add(data)
        console.log({results})
    })()

</script>

node.swarm.peers()给了我一个同行列表,但似乎没有包含IP地址。

解决方法

查看您的配置,似乎您没有配置任何群集地址。必须为您的对等方配置一个群地址,以使其可以与网络中的其他对等方一起使用。

在某些情况下,在这种情况下,您正在处理浏览器环境。当前,浏览器不允许监听连接。限制之一实际上是浏览器没有提供某人可以用来访问的“ IP地址”。它们是在客户端-服务器模型中设计的,其中服务器IP地址已知,客户端将与服务器建立连接。

作为解决上述问题的方法之一,有libp2p-webrtc-star传输。它基本上使用的服务器将负责代表浏览器节点侦听连接。您可以使用可用的服务器之一来实验https://github.com/libp2p/js-libp2p-webrtc-star#hosted-rendezvous-server。基本上,应该在群地址中添加一个多地址,例如/dns4/wrtc-star1.par.dwebops.pub/tcp/443/wss/p2p-webrtc-star。节点启动后,浏览器节点将与服务器建立连接,服务器将通知所有其他对等点有关加入的对等点。这些对等方可以通过此星型服务器拨打您的对等方,而多地址将类似于:/dns4/wrtc-star1.par.dwebops.pub/tcp/443/wss/p2p-webrtc-star/p2p/QmSoLPppuBtQSGwKDZT2M73ULpjvfd3aZ6ha4oFGL1KrGM

使用此设置,您应该能够打开多个浏览器,并且同级之间可以发现并相互连接。如果运行ipfs.swarm.peers,则应该通过星形服务器看到其他节点对等方的地址。

我希望这可以帮助您前进。我也强烈建议您检查以下示例:

作为补充,正在开发一些新功能,以改善这方面的浏览器体验。您可以关注以下方面的发展:https://github.com/libp2p/js-libp2p/issues/703

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?