16

我有 javascript 应用程序 (ReactJs),它将作为 android 混合应用程序在移动设备上运行。我不想在移动设备上运行完整的 IPFS 节点,因为它会消耗大量的内存和能量。那么如何将我的应用程序连接到 IPFS 呢?

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

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

4

2 回答 2

6

你有几个选择:

  • 您可以在某些云中托管 IPFS 节点,并让所有移动设备连接到它
  • 在需要时运行js-ipfs节点实例,然后对其进行垃圾收集。

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

于 2017-07-29T22:59:09.567 回答
5

至少到目前为止,我的经验是,在任何语言中都没有任何好的 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>

祝你好运!

于 2018-02-16T16:27:17.870 回答