IPFS- Как отправить сообщение от однорангового к другому?
Я ищу решение для отправки сообщения от однорангового IPFS другому
в github doc я нашел этот код, который соединяет одноранговый узел с другим:
ipfs.swarm.connect(addr, function (err) {
if (err) {
throw err
}
// if no err is present, connection is now open
})
но после подключения делать нечего согласно документации.
Существует решение под названием ipfs-pubsub-room, которое занимается обменом сообщениями между партнерами, но CDN для браузера отсутствует.
0 ответов
ipfs.swarm.connect
просто соединит оба узла, чтобы они могли обмениваться файлами.
ipfs-pubsub-room должен нормально работать из браузера, но да, вам нужно будет упаковать его самостоятельно.
Однако вы также можете использовать libp2p, сетевую библиотеку IPFS, напрямую через ipfs.libp2p
свойство, если вам просто нужно отправить сообщение напрямую от одного пира к другому.
Чтобы прослушивать входящие сообщения, вы можете зарегистрировать "обработчик протокола" на одном из ваших узлов:
const pull = require('pull-stream')
ipfs.libp2p.handle('/my/protocol/name/1.0.0', (protocolName, connection) => {
pull(connection, pull.collect((err, data) => {
console.log("received:", data.toString())
})
})
Чтобы отправить сообщение, вам нужно будет "набрать" одноранговый узел / протокол:
const pull = require('pull-stream')
ipfs.libp2p.dialProtocol(addr, '/my/protocol/name/1.0.0', (err, connection) => {
pull(pull.values(["my message"]), conn)
})
Вы можете найти полный пример в документации по js-ipfs.
IPFS - это файловая система, поэтому, если у вас есть два подключенных партнера, они могут add
а также get
файлы для обмена контентом между этими узлами. Если ваше "сообщение" может быть закодировано как файл, который добавляет узел A ( https://docs.ipfs.io/reference/api/cli/) и узел B получает ( https://docs.ipfs.io/reference/api/cli/), то они могут обмениваться сообщениями таким образом.
Проверьте https://docs.ipfs.io/introduction/usage/ для общих инструкций по использованию.