Skip to content

Instantly share code, notes, and snippets.

@SgtPooki
Created September 14, 2023 21:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SgtPooki/588b9527bff706a7d2a32afbdb52708e to your computer and use it in GitHub Desktop.
Save SgtPooki/588b9527bff706a7d2a32afbdb52708e to your computer and use it in GitHub Desktop.
use Helia to test if certain peers are listening on webtransport
import { multiaddr } from '@multiformats/multiaddr'
import { WebTransport } from '@multiformats/multiaddr-matcher'
import { createHelia } from 'helia'
const helia = await createHelia()
const multiaddrs = [
// fill out multiaddrs for peers you want to check here:
'/ip4/123.45.67.89/tcp/4001/ipfs/Qmabcdefg...',
'/ip4/98.76.54.32/tcp/4004/ipfs/bafyka...',
].map(multiaddr)
// group all listed multiaddrs by peerId
const groupedMultiaddrs = multiaddrs.reduce((acc, ma) => {
const peerId = ma.getPeerId()
if (!acc[peerId]) {
acc[peerId] = []
}
acc[peerId].push(ma)
return acc
}, {})
// console.log('groupedMultiaddrs: ', groupedMultiaddrs)
function confirmMultiaddrsSupportWebTransport (multiaddrs) {
return multiaddrs.some((ma) => WebTransport.matches(ma))
}
// loop through each peerId and try to connect to all of it's multiaddrs
for (const [peerId, multiaddrs] of Object.entries(groupedMultiaddrs)) {
// console.log('multiaddrs: ', multiaddrs)
console.log('trying to connect to peerId: ', peerId)
try {
const connection = await helia.libp2p.dial(multiaddrs)
// console.log('Connected, running identify')
const ctlr = new AbortController()
const { signal } = ctlr
setTimeout(() => ctlr.abort(), 60000)
const response = await helia.libp2p.services.identify.identify(connection, {
signal
})
const { listenAddrs } = response
if (confirmMultiaddrsSupportWebTransport(listenAddrs)) {
console.log('confirmed webtransport listen on peerId: ', peerId)
console.log('listenAddrs: ', listenAddrs)
}
} catch (e) {
console.error(e)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment