我正在寻找一种从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 :(得分:2)
ipfs.swarm.connect
只需连接两个节点,以便它们可以交换文件。
ipfs-pubsub-room在浏览器中应该可以正常工作,但是是的,您需要自己打包。
但是,如果您只需要直接从一个对等方向另一个对等方发送消息,则可以也直接通过ipfs.libp2p
属性使用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 documentation中找到完整的示例。
答案 1 :(得分:1)
IPFS是文件系统,因此一旦您连接了两个对等方,它们就可以add
和get
文件在这些节点之间共享内容。如果您的“消息”可以被编码为节点A添加(https://docs.ipfs.io/reference/api/cli/#ipfs-add)而节点B获得(https://docs.ipfs.io/reference/api/cli/#ipfs-get)的文件,则他们可以这种方式交换消息。
查看https://docs.ipfs.io/introduction/usage/以获得常规用法说明。