如何在 IPFS / libp2p 中获取 WebRTC 对等方的 IP 地址?
How to get IP address of WebRTC peer in IPFS / libp2p?
我正在使用此代码在浏览器中使用 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', ({ 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 地址。
看你的配置,好像你没有配置任何群地址。必须为您的对等点配置 swarm 地址,以禁止网络中的其他对等点访问。
某些上下文,在这种特定情况下,您正在处理浏览器环境。目前,浏览器不允许监听连接。其中一个限制实际上是浏览器不提供某人可以用来访问它的“IP 地址”。它们采用 client-server 模型设计,其中服务器 IP 地址已知,客户端将与其建立连接。
作为解决上述问题的方法之一,有libp2p-webrtc-star transport. It basically uses a server that will be responsible for listening for connections on behalf of browser nodes. You can use one of the available servers for experimenting 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/ipfs/js-ipfs/tree/master/examples/browser-exchange-files
- https://github.com/libp2p/js-libp2p/blob/master/examples/libp2p-in-the-browser
作为补充,我们正在开发一些新功能,旨在改善这方面的浏览器体验。您可以关注以下动态:https://github.com/libp2p/js-libp2p/issues/703
我正在使用此代码在浏览器中使用 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', ({ 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 地址。
看你的配置,好像你没有配置任何群地址。必须为您的对等点配置 swarm 地址,以禁止网络中的其他对等点访问。
某些上下文,在这种特定情况下,您正在处理浏览器环境。目前,浏览器不允许监听连接。其中一个限制实际上是浏览器不提供某人可以用来访问它的“IP 地址”。它们采用 client-server 模型设计,其中服务器 IP 地址已知,客户端将与其建立连接。
作为解决上述问题的方法之一,有libp2p-webrtc-star transport. It basically uses a server that will be responsible for listening for connections on behalf of browser nodes. You can use one of the available servers for experimenting 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/ipfs/js-ipfs/tree/master/examples/browser-exchange-files
- https://github.com/libp2p/js-libp2p/blob/master/examples/libp2p-in-the-browser
作为补充,我们正在开发一些新功能,旨在改善这方面的浏览器体验。您可以关注以下动态:https://github.com/libp2p/js-libp2p/issues/703