ACI IPFS节点连接问题



关于如何在Azure容器中设置IPFS节点来设置两个IPFS节点(一个在欧洲,一个在美国),以便对跨节点检索CID所需的时间进行基准测试。我创建了一个简单的脚本,用于使用ipfs-http-client从这两个节点添加和检索数据。

// write.js
import * as IPFS from 'ipfs-http-client';
const main = async () => {
const ipfs = IPFS.create({
host: '<eu host>',
port: '5001',
protocol: 'http',
});
const { cid } = await ipfs.add(
`Hello at ${new Date().toISOString()}`
);
console.log(cid);
};
main();
// read.js
import * as IPFS from 'ipfs-http-client';
const main = async () => {
const ipfs = IPFS.create({
host: '<us host>',
port: '5001',
protocol: 'http',
});
for await (const c of ipfs.cat(
'<cid>'
)) {
console.log(new TextDecoder().decode(c));
}
};
main();

如果我读写同一个节点,它工作得很好,但是,存储在一个节点中的数据似乎不能从任何其他节点访问,好像节点没有正确连接。

我还尝试使用相同的代码片段将数据写入infra -ipfs网关并通过ipfs检索它。IO网关似乎工作。这可能意味着我刚刚配置了错误的节点,但是我不知道如何解决这个问题。我已经尝试了多种解决方案来在线获取IPFS节点,但到目前为止我还没有成功。最理想的情况是,我需要任何两个应用程序能够从选定的列表中随机选择任何对等体,并在节点之间共享相同的数据,最好使用pubsub。

我认为IPFS能够自动发现内容,但是通过为每个节点运行ipfs swarm connect <multiaddr>以手动将它们彼此连接起来,我最终使其工作。如果有任何方法可以让每个节点自动发现彼此和它们的内容,那将是惊人的,但至少我已经更进一步了。

最新更新