Why hard?
On server maintain list of ips. Serve ip to the client-peer. If the connection gets spotty replace it or use direct connection to your server. All State exists on your server. Caching may be an anti-pattern depending.
What's so hard?
On server maintain list of ips. Serve ip to the client-peer. If the connection gets spotty replace it or use direct connection to your server. All State exists on your server. Caching may be an anti-pattern depending.
What's so hard?
Decentralization is allowing peers to find and negotiate their own connections and demoting your servers to a very powerful peer.