微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ipfs pubsub 不能跨两个远程对等点工作

如何解决ipfs pubsub 不能跨两个远程对等点工作

如果我在我的电脑上运行此代码,我会看到我的消息,但另一台电脑上运行相同代码的另一个人看不到我的。这可能是 NAT 的事情吗?还是我用错了?


const Room = require("ipfs-pubsub-room");
const ipfs = require("ipfs");
ipfs.create({}).then(async (node) => {
  const room = new Room(node,"room-name");

  room.on("peer joined",(peer) => {
    console.log("Peer joined the room",peer);
  });

  room.on("peer left",(peer) => {
    console.log("Peer left...",peer);
  });

  // Now started to listen to room
  room.on("subscribed",() => {
    console.log("Now connected!");
  });

  room.on("message",({ from,data }) =>
    console.log(from,JSON.parse(data.toString()))
  );

  room.broadcast(JSON.stringify({ bla: "hello" }));
});

解决方法

你是在 Node.js 还是浏览器中使用这个?

问题应该是您的对等点彼此之间没有连接(或与运行 pubsub 的一组公共对等点)无法可靠地转发 pubsub 消息。您诊断此问题的第一步是使用 node.swarm.peers() 并查看您是否有另一个对等点。

考虑到你的 peer 没有连接到其他 person 节点,你需要手动连接它,或者配置一个发现机制来帮助你(这是自动发现和连接是社区的一个已知问题,我们将致力于改善这种体验)。 最简单的选择是使用 webrtc-star 传输+发现。您可以在 ipfs browser exchange fileslibp2p 中查看使用它的示例。

这样,您可能会看到其他对等点已连接,然后可以交换 Pubsub 消息。您可以详细了解 Libp2p config.mdlibp2p discovery examples 中可用的发现机制。

如果您能解决问题,请告诉我

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。