Connection Closing #962
Description
Similar to go-ipfs (Read Connection Closing), js-ipfs is passing through similar hurdles when it comes to managing resources available that are shared amongst the open Connections.
In js-ipfs this is even more noticeable since it has to run in a Browser with an even more constrained envinronment and use a transport that is known as a CPU and memory hog, I'm talking about WebRTC.
If that wasn't enough, Chrome's new policy since version 57 is to aggressively throttle app resources for any tab that is in the background or not in the view of the users (i.e if you switch to another app, Chrome will also throttle the tab even if it remains open). This forces to be extra especially clever of how to maintain things working inside js-ipfs. There is an issue where we discuss this in more detail -- #611.
A quick way to mitigate this is to stick js-ipfs into a Service Worker, however, it has the tradeoff that it won't be able to use WebRTC.
In essence, we do need to solve Connection Closing and Resource Management as part of the protocol and create a model that can be translated between runtimes.
This is one of our top priorities right now.