如何解决使用 hyperswarm 库在连接的服务器之间复制消息
我正在尝试使用 server.js
和 server1.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,// find & connect to peers
announce: false // <--------- don't announce,stops duplicates
})
但我更希望两台服务器都宣布。
我对这里的套接字、标准输入或超群有什么误解?
解决方法
好吧,我在名为 example.js
的文件中的 hyperswarm 节点模块文件夹中找到了我自己的答案
我添加了以下内容:
const {
priority,status,retries,peer,client
} = details
if (client) process.stdin.pipe(socket)
else socket.pipe(process.stdout)
这解决了我的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。