将浏览器连接到 NodeJS IPFS 节点

Connect browser to NodeJS IPFS node

我正在尝试将浏览器 js-ipfs 节点连接到我的 NodeJS 服务器,该服务器也是 运行 一个 js-ipfs 节点。我知道我需要将服务器的 Multiaddr 添加到浏览器的 bootstrap 配置中才能连接两个节点。

但是,由于我的网站使用 HTTPS,当我尝试通过 ws 将浏览器连接到我的服务器时,它会发出此警告:An insecure WebSocket connection may not be initiated from a page loaded over HTTPS. 但根据我的理解,NodeJS 的 js-ipfs 无法接听 wss 电话。

那么我该如何连接这两个节点呢?使用 WebSockets 是唯一还是最好的方法?

由于浏览器的安全策略,您无法从安全上下文(例如通过 HTTPS 加载的页面)建立未加密的连接。您可以在 MDN Secure Context 阅读相关内容。所以你应该让你的服务器使用 SSL,然后用 wss:// 替换 ws://。最简单的做法是使用 nginx 设置 SSL。您还需要为证书设置一个域名。 您还可以查看一些文档,了解如何在此 PR.

上使用 SSL 设置 libp2p/IPFS

您也可以使用 webrtc-star 代替 websockets。但是,虽然您可以同时使用两者,但它们中的每一个都有更适合特定场景的特殊性。如果需要对等发现,此时应该使用 webrtc-star ,您可以查看 https://github.com/libp2p/js-libp2p/tree/master/examples/libp2p-in-the-browser and https://github.com/ipfs/js-ipfs/tree/master/examples/browser-exchange-files 。如果您不需要依赖点发现并且另一个点是众所周知的点,您可以使用 bootstrap 并通过 websockets 连接。