问题描述
我正在尝试将浏览器js-ipfs
节点连接到同时运行js-ipfs
节点的NodeJS服务器。我知道我需要将服务器的Multiaddr
添加到浏览器的引导程序配置中才能连接两个节点。
但是,由于我的网站使用HTTPS
,因此当我尝试通过ws
将浏览器连接到服务器时,会发出以下警告:An insecure WebSocket connection may not be initiated from a page loaded over HTTPS.
,但据我理解NodeJS的{{1} }无法收听js-ipfs
通话。
那么我该如何连接两个节点?使用WebSockets是唯一还是最好的方法?
解决方法
由于浏览器的安全政策,您无法通过安全上下文(例如,通过HTTPS加载的页面)建立未加密的连接。您可以在MDN Secure Context上了解它。因此,您应该使服务器使用SSL,然后将ws://替换为wss://。最简单的方法是使用nginx设置SSL。您还需要为证书设置一个域名。 您还可以在此PR上查看有关如何使用SSL设置libp2p / IPFS的一些文档。
您也可以使用webrtc-star
代替websocket。但是,虽然您可以同时使用这两种方法,但它们中的每一种都有其特殊性,对于某些情况而言更好。如果您需要对等发现,那么现在应该使用webrtc-star
,并且可以检查https://github.com/libp2p/js-libp2p/tree/master/examples/libp2p-in-the-browser和https://github.com/ipfs/js-ipfs/tree/master/examples/browser-exchange-files。如果您不需要依靠对等点发现,而另一个对等点是众所周知的对等点,则可以使用引导程序并通过websockets连接。