我正在尝试加快使用 js-libp2p 的速度,并且正在使用以下代码片段:
const Libp2p = require("libp2p")
const WebSockets = require('libp2p-websockets')
const Tcp = require('libp2p-tcp')
const { NOISE } = require('libp2p-noise')
const MPLEX = require('libp2p-mplex')
const Mdns = require('libp2p-mdns')
async function main() {
const node = await Libp2p.create({
modules: {
transport: [WebSockets, Tcp],
connEncryption: [NOISE],
streamMuxer: [MPLEX],
peerDiscovery: [Mdns]
},
addresses: {
listen: [
'/ip4/127.0.0.1/tcp/0/ws',
'/ip4/127.0.0.1/tcp/0',
]
}
})
await node.start()
node.on('peer:discovery', (peer) => {
console.log(`Discovered ${peer}`)
})
node.connectionManager.on('peer:connect', (connection) => {
console.log(`Connection established ${connection.remotePeer.toB58String()}`)
})
}
main()
如果我从同一台计算机上的两个控制台运行它,则在启动第二个控制台时,我会得到以下预期输出:
Discovered bafzbeia7bnohivu4lnyvzd5f4vix2xsru4sidmgitcp5u2ysepxwct5rwu
Connection established QmQRqPvVKDYUKrNYc8SsFwyK2kkxq3zUSojvmDUqNzoy32
Connection established QmQRqPvVKDYUKrNYc8SsFwyK2kkxq3zUSojvmDUqNzoy32
Connection established QmQRqPvVKDYUKrNYc8SsFwyK2kkxq3zUSojvmDUqNzoy32
并从另一个控制台也:
Discovered bafzbeieeqfz3whgaj7hbxbczkxs3vue2yxid4cwpdqkrtzcrpkmepuqzj4
Connection established QmXFu1kP9wWu42vtREEdXhdWc4uLHZ4t5r3fYtfbmb66y4
Connection established QmXFu1kP9wWu42vtREEdXhdWc4uLHZ4t5r3fYtfbmb66y4
Connection established QmXFu1kP9wWu42vtREEdXhdWc4uLHZ4t5r3fYtfbmb66y4
但是,如果我移动相同的脚本并在同一网络上的另一台计算机上运行它,我只会看到 Discovered 日志。连接日志永远不会被打印出来。例如我只看到这个:
➜ my_node node node.js
Discovered bafzbeienf65d3slqvblq3sqoedltuqorakqfkdnyodocul52gptdrqhqx4
有人解释为什么会这样吗?还有我需要做什么才能完全连接?因为当我使用 libp2p 时,我希望节点在两台计算机上运行。
peer:discovery
还可以解释事件和peer:connect
事件之间的区别吗?我的意思是对等发现与对等连接有何不同?
PS:我还注意到连接日志会不时打印出来。为什么也是这样?