使用 hyperswarm 库在连接的服务器之间复制消息
Duplicate messages between connected servers using hyperswarm library
我正在尝试使用 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, {
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)
这解决了我的问题。
我正在尝试使用 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, {
lookup: true, // find & connect to peers
announce: false // <--------- don't announce, stops duplicates
})
但我希望两个服务器都宣布。
我对这里的套接字、标准输入或 hyperswarm 有什么误解?
好吧,我在名为 example.js
我添加了以下内容:
const {
priority,
status,
retries,
peer,
client
} = details
if (client) process.stdin.pipe(socket)
else socket.pipe(process.stdout)
这解决了我的问题。