使用 hyperswarm 库在连接的服务器之间复制消息

Duplicate messages between connected servers using hyperswarm library

我正在尝试使用 server.jsserver1.js 中的以下代码将消息从一个连接的节点服务器发送到另一个:

const hyperswarm = require('hyperswarm')
const crypto = require('crypto')

const swarm = hyperswarm()

// look for peers listed under this topic
const topic = crypto.createHash('sha256')
  .update('mycoolstuff')
  .digest()

swarm.join(topic, {
  lookup: true, // find & connect to peers
  announce: true // optional- announce self as a connection target
})

swarm.on('connection', (socket, details) => {
  //console.log('new connection!', details)

  // you can now use the socket as a stream, eg:
  process.stdin.pipe(socket).pipe(process.stdout)
})

问题是来自一个终端的消息在另一终端上重复。

例如,如果我在 server.js 的终端中输入以下内容:

test 123

我在 server1.js 中得到以下内容:

test 123
test 123

。 . .反之亦然

我可以通过将两个服务器之一设置为不通告来解决这个问题:

swarm.join(topic, {
  lookup: true, // find & connect to peers
  announce: false // <--------- don't announce, stops duplicates
})

但我希望两个服务器都宣布。

我对这里的套接字、标准输入或 hyperswarm 有什么误解?

好吧,我在名为 example.js

的文件中的 hyperswarm 节点模块文件夹中找到了自己的答案

我添加了以下内容:

  const {
    priority,
    status,
    retries,
    peer,
    client
  } = details

  if (client) process.stdin.pipe(socket)
  else socket.pipe(process.stdout)

这解决了我的问题。