A peer discover mechanism that uses mDNS to discover peers on the local network.
import { createLibp2p } from 'libp2p'import { mdns } from '@libp2p/mdns'const libp2p = await createLibp2p({ peerDiscovery: [ mdns() ]})libp2p.addEventListener('peer:discovery', (evt) => { libp2p.dial(evt.detail.multiaddrs) // dial discovered peers console.log('found peer: ', evt.detail.toString())}) Copy
import { createLibp2p } from 'libp2p'import { mdns } from '@libp2p/mdns'const libp2p = await createLibp2p({ peerDiscovery: [ mdns() ]})libp2p.addEventListener('peer:discovery', (evt) => { libp2p.dial(evt.detail.multiaddrs) // dial discovered peers console.log('found peer: ', evt.detail.toString())})
A query is sent to discover the libp2p nodes on the local network
{ "type": "query", "questions": [{ "name": "_p2p._udp.local", "type": "PTR" }]} Copy
{ "type": "query", "questions": [{ "name": "_p2p._udp.local", "type": "PTR" }]}
When a query is detected, each libp2p node sends an answer about itself
[{ "name": "_p2p._udp.local", "type": "PTR", "class": "IN", "ttl": 120, "data": "QmNPubsDWATVngE3d5WDSNe7eVrFLuk38qb9t6vdLnu2aK._p2p._udp.local"}, { "name": "QmNPubsDWATVngE3d5WDSNe7eVrFLuk38qb9t6vdLnu2aK._p2p._udp.local", "type": "SRV", "class": "IN", "ttl": 120, "data": { "priority": 10, "weight": 1, "port": "20002", "target": "LAPTOP-G5LJ7VN9" }}, { "name": "QmNPubsDWATVngE3d5WDSNe7eVrFLuk38qb9t6vdLnu2aK._p2p._udp.local", "type": "TXT", "class": "IN", "ttl": 120, "data": ["QmNPubsDWATVngE3d5WDSNe7eVrFLuk38qb9t6vdLnu2aK"]}, { "name": "LAPTOP-G5LJ7VN9", "type": "A", "class": "IN", "ttl": 120, "data": "127.0.0.1"}, { "name": "LAPTOP-G5LJ7VN9", "type": "AAAA", "class": "IN", "ttl": 120, "data": "::1"}] Copy
[{ "name": "_p2p._udp.local", "type": "PTR", "class": "IN", "ttl": 120, "data": "QmNPubsDWATVngE3d5WDSNe7eVrFLuk38qb9t6vdLnu2aK._p2p._udp.local"}, { "name": "QmNPubsDWATVngE3d5WDSNe7eVrFLuk38qb9t6vdLnu2aK._p2p._udp.local", "type": "SRV", "class": "IN", "ttl": 120, "data": { "priority": 10, "weight": 1, "port": "20002", "target": "LAPTOP-G5LJ7VN9" }}, { "name": "QmNPubsDWATVngE3d5WDSNe7eVrFLuk38qb9t6vdLnu2aK._p2p._udp.local", "type": "TXT", "class": "IN", "ttl": 120, "data": ["QmNPubsDWATVngE3d5WDSNe7eVrFLuk38qb9t6vdLnu2aK"]}, { "name": "LAPTOP-G5LJ7VN9", "type": "A", "class": "IN", "ttl": 120, "data": "127.0.0.1"}, { "name": "LAPTOP-G5LJ7VN9", "type": "AAAA", "class": "IN", "ttl": 120, "data": "::1"}]
A peer discover mechanism that uses mDNS to discover peers on the local network.
Example: Use with libp2p
MDNS messages
A query is sent to discover the libp2p nodes on the local network
When a query is detected, each libp2p node sends an answer about itself