The way I would make this work:<p>- Build a DHT style overlay network of &quot;meet in the middle&quot; servers<p>- Have a standalone html file, that uses websockets to connect to the network of servers.<p>- Have both clients generate keys, exchange them via other channels.<p>- Both users have a shared key, they both lookup the server that hosts the shared key on the DHT network (that actually can be done without leaking the key to every server) then they use that server to exchange NAT-busting messages<p>Ideally, you would have a lot of different use cases using the same network in such a way that it is hard for a server to figure out what you are using it for, and it is essentially impossible for a server to target MITM a specific pair. What this does leave open is sybil attacking and MITM-ing everything opportunistically. At this point we essentially start to build TOR via websockets and WebRTC and it all breaks down.