4

我正在寻找一种将消息从 IPFS 对等方发送到另一个的解决方案

github 文档中,我发现了将一个对等点连接到另一个对等点的代码:

ipfs.swarm.connect(addr, function (err) {
  if (err) {
    throw err
  }
  // if no err is present, connection is now open
})

但根据文档,连接后无事可做。

有一个名为ipfs-pubsub-room的解决方案处理对等点之间的消息传递,但没有用于浏览器的 CDN。

4

2 回答 2

5

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())
  }))
})

(在哪里ipfs初始化的IPFS 节点对象,而不是IPFS导入。)

要发送消息,您必须“拨打”对等/协议:

const pull = require('pull-stream')
ipfs.libp2p.dialProtocol(addr, '/my/protocol/name/1.0.0', (err, connection) => {
  pull(pull.values(["my message"]), connection)
})

您可以在js-ipfs 文档中找到完整的示例。

于 2018-12-11T00:00:13.760 回答
-2

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/了解一般使用说明。

于 2018-12-10T23:25:51.407 回答