Yeah, I'd look at IPFS's networking library, libp2p. It's the peer-to-peer backbone of IPFS and has a big community and active development https://libp2p.io/. It's also implemented in both go and js (as most of IPFS is)
We moved away from libp2p at the project I work on because of major instability problems in browsers. Our dapp that used libp2p would crash after a few minutes and was generally not easy to use.
Sorry to hear you had move to something else -- my guess is these crashes were from WebRTC, which isn't very performant in browsers yet. Especially with more than a handful of WebRTC connections, we've seen it crash regularly.
We've switched the default browser-to-browser transport in js-libp2p to a websockets relay recently, so you should give it another try.
Yes, of course, and it was WebRTC. We ended up with a better solution (encoding the metadata we were storing in IPFS in a bytes32 stored in the Ethereum blockchain).
There were extra scripts and setup. Overall moving off simplified our stack, so it was probably a good move despite libp2p's crashing.
Could be totally fixed by now for all I know.
That said, it was believed that most Protocol Labs resources were/would be devoted to Filecoin, which is probably a safe bet.
EDIT: I'm referring to the JS version here.