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

mar*_*odb 4 node.js ipfs libp2p

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

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

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

但根据文档,连接后没有任何反应。

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

Ste*_*ven 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())
  }))
})
Run Code Online (Sandbox Code Playgroud)

(其中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)
})
Run Code Online (Sandbox Code Playgroud)

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