首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在IP / libp2p中获取libp2p对等点的IP地址?

如何在IP / libp2p中获取libp2p对等点的IP地址?
EN

Stack Overflow用户
提问于 2020-09-02 16:52:09
回答 1查看 1.4K关注 0票数 1

我使用这段代码在浏览器中玩IPFS。我想知道如何访问webRTC对等方的ip地址?或者甚至知道这些对等点实际上是webRTC,还是http对等点?

代码语言:javascript
复制
<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', ({ peerId, protocols}) => console.log('change:protocols', {peerId, 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地址。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-02 17:22:47

查看您的配置,您似乎没有配置任何群集地址。必须配置群集地址,以便您的对等点可以从网络中的其他对等点中获得数据。

在这种特定情况下,您所处理的是浏览器环境。目前,浏览器不允许侦听连接。其中一个限制实际上是浏览器没有提供某个人可以用来访问它的"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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63710120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档