0

我正在尝试加快使用 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:我还注意到连接日志会不时打印出来。为什么也是这样?

4

1 回答 1

0

好的,事实证明问题是我在听环回地址。那是 127.0.0.1。更换它0.0.0.0解决了这个问题。因此从:

          '/ip4/127.0.0.1/tcp/0/ws',
          '/ip4/127.0.0.1/tcp/0',

          '/ip4/0.0.0.0/tcp/0/ws',
          '/ip4/0.0.0.0/tcp/0',
于 2021-12-26T10:58:57.437 回答