IPFS-如何将消息从同级发送到另一个?

时间:2018-11-25 12:34:27

标签: node.js ipfs libp2p

我正在寻找一种从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。

2 个答案:

答案 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是文件系统,因此一旦您连接了两个对等方,它们就可以addget文件在这些节点之间共享内容。如果您的“消息”可以被编码为节点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/以获得常规用法说明。