如何从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以了解如何开始。
至少到目前为止,我的经验是,在任何语言中,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>
祝您好运!
非常感谢您的建议! – user3024710