如何解决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 files 和 libp2p 中查看使用它的示例。
这样,您可能会看到其他对等点已连接,然后可以交换 Pubsub 消息。您可以详细了解 Libp2p config.md 和 libp2p discovery examples 中可用的发现机制。
如果您能解决问题,请告诉我
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。