如何从Javascript应用程序使用IPFS而不运行ipfs节点?

问题描述:

我有一个JavaScript应用程序(ReactJs)将作为一个Android混合应用程序在移动设备上运行。我不想在移动设备上运行完整的IPFS节点,因为它会消耗大量的内存和能量。那么我怎样才能将我的应用程序连接到IPFS?如何从Javascript应用程序使用IPFS而不运行ipfs节点?

我看到了https://github.com/ipfs/js-ipfs-api#importing-the-module-and-usage,但它看起来并不适用于移动设备,因为它作为单独的服务运行。

也许我必须通过IPFS API(https://ipfs.io/docs/api/)连接到Internet上的IPFS节点,但是有没有办法在运行时发现运行节点并选择最快/最接近的节点呢?

你有几个选择这里:

  • 你可以将一些云的IPFS节点和你的所有移动设备连接到它
  • 运行js-ipfs节点实例,当你需要它,垃圾之后收集。

您正在开发PWA吗? js-ipfs在Android手机上的Chrome上运行良好,请检查https://github.com/ipfs/js-ipfs/tree/master/examples以了解如何开始。

+1

非常感谢您的建议! – user3024710

至少到目前为止,我的经验是,在任何语言中,IPFS都没有真正的包装器。至少,还没有。但没关系,因为它使用起来非常简单。请记住,当你添加一个文件时,它会在头文件中返回哈希值,而不是像你期望的那样在响应体中。这真的让我很难过。除此之外,没有什么。

只要不需要运行它...你真的应该运行你自己的ipfs节点。这是确保您的内容在人们需要时保持可用的唯一方法。 IPFS上的缓存寿命似乎大约为8小时,但这非常惊人,但它不能替代实际成为网络的一部分。

也就是说,您可能能够找到可写入的公共节点。你必须做一个谷歌搜索,但我绝对肯定他们在那里。

您可能还想看看像Steemit这样的渠道,以便正在积极参与IPFS项目的人员使用。我在那里运气不错。关于IPFS,Swarm,Web3和Dapps的一般答案很多。

哦,测试一个节点是可写的,试试这个:

<form action="http://[domain_name]:[port_number]/ipfs/api/v0/add" enctype="multipart/form-data" method="post"> 
 
    <input type="file" name="image" accept="image/*"/> 
 
    <input type="submit"/> 
 
</form>

祝您好运!