-
登录中
要启用调试,请配置
DEBUG
环境变量。从
DEBUG=*
,它会打印日志行,如:
mss:select select: read "/noise" +1ms
libp2p:upgrader encrypting outbound connection to {"id":"QmRiNVP5NSGJPHLo256vNMTYW9VzsTKYm4dRG3GoJj37ah"} +12ms
libp2p:noise Stage 0 - Initiator starting to send first message. +14ms
选择要使用打印的内容
DEBUG=*noise ...
-
事件
OP代码中的问题是
peer:discovery
事件的参数类型为PeerID,而不是Peer。因此,声明
console.log('Discovered:', peer.id.toB58String())
不正确,应替换为
console.log('Discovered:', peer.toB58String())
但有人可能已经注意到,OP没有提供任何与此相关的错误消息。之所以会发生这种情况,是因为这些事件处理程序是用错误消音器处理的。
不过,我不确定发生了什么,运行下面的代码不会触发带有“yo”消息的异常。
node1.on('peer:discovery', (peerID) => {
console.log(node1.peerId.toB58String(), "discovered:", peerID.toB58String())
throw "yo"
})
相关源代码
const Libp2p = require('libp2p')
const MulticastDNS = require('libp2p-mdns')
const KadDHT = require('libp2p-kad-dht')
const Bootstrap = require('libp2p-bootstrap')
const TCP = require('libp2p-tcp')
const Mplex = require('libp2p-mplex')
const { NOISE } = require('libp2p-noise')
const CID = require('cids')
const all = require('it-all')
const delay = require('delay')
const bootstrapers = [
'/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ',
'/ip4/104.236.176.52/tcp/4001/p2p/QmSoLnSGccFuZQJzRadHn95W2CrSFmZuTdDWP8HXaHca9z',
'/ip4/104.236.179.241/tcp/4001/p2p/QmSoLPppuBtQSGwKDZT2M73ULpjvfd3aZ6ha4oFGL1KrGM',
'/ip4/162.243.248.213/tcp/4001/p2p/QmSoLueR4xBeUbY9WZ9xGUUxunbKWcrNFTDAadQJmocnWm',
'/ip4/128.199.219.111/tcp/4001/p2p/QmSoLSafTMBsPKadTEgaXctDQVcqN88CNLHXMkTNwMKPnu',
'/ip4/104.236.76.40/tcp/4001/p2p/QmSoLV4Bbm51jM9C4gDYZQ9Cy3U6aXMJDAbzgu2fzaDs64',
'/ip4/178.62.158.247/tcp/4001/p2p/QmSoLer265NRgSp2LA3dPaeykiS1J6DifTC88f5uVQKNAd',
'/ip4/178.62.61.185/tcp/4001/p2p/QmSoLMeWqB7YGVLJN3pNLQpmmEk35v6wYtsMGLzSr5QBU3',
'/ip4/104.236.151.122/tcp/4001/p2p/QmSoLju6m7xTh3DuokvT3886QRYqxAzb1kShaanJgW36yx'
]
const createNode = () => {
return Libp2p.create({
addresses: {
listen: ['/ip4/0.0.0.0/tcp/0']
},
modules: {
transport: [ TCP ],
streamMuxer: [ Mplex ],
connEncryption: [ NOISE ],
// peerDiscovery: [ MulticastDNS ],
peerDiscovery: [ MulticastDNS ],
// peerDiscovery: [ Bootstrap, MulticastDNS ],
dht: KadDHT,
// pubsub: GossipSub
},
// transportManager: {
// faultTolerance: FaultTolerance.NO_FATAL
// },
config: {
peerDiscovery: {
autoDial: true,
[MulticastDNS.tag]: {
broadcast: true,
interval: 1000,
enabled: true
},
[Bootstrap.tag]: {
interval: 1000,
enabled: true,
list: bootstrapers
},
},
dht: {
enabled: true
}
}
})
}
( async () => {
const [node1, node2] = await Promise.all([
createNode(),
createNode()
])
node1.on('peer:discovery', (peerID) => {
console.log(node1.peerId.toB58String(), "discovered:", peerID.toB58String())
})
node2.on('peer:discovery', (peerID) => {
console.log(node2.peerId.toB58String(), "discovered:", peerID.toB58String())
})
node1.on('error', console.error)
node2.on('error', console.error)
await Promise.all([
node1.start(),
node2.start()
])
})()