Quick demonstrations & development: ngrok
Low-resource environments (IoT, embedded): rathole
Privacy-focused deployments: connet
Production with active community: FRP
Self-hosting with direct connections: connet
https://gist.github.com/andrewarrow/d0e41dd954485a8574b9ea74...
One new feature I haven't highlighted yet, is that you can, in addition, encrypt traffic as it goes through relays (both via tls or noise-inspired protocol, dhxcp). This enhances privacy, even when you are using public (e.g. not owned by you relays), covering a case like https://connet.dev nicely.
Full disclosure I work there.
Full disclosure - I work at https://pinggy.io
In any case, zrok.io is cool, it is certainly more mature and feature rich project.
In any case, homegrown solutions are great, they offer the most flexibility, but also require the biggest time investment (and knowledge of course).
[1]: https://gsocket.io/
This is a hosted version of connet[1]. In addition, it allows users to expose their endpoints directly on the internet (optional and still in progress)