I'm imagining mainstream messaging applications on mobile phones but without centralized servers.
Somehow two phones, connected to internet over mobile network, are matched and create a connection between them. Then Phone A moves out of it's current network and it changes it's IP. Phone B's IP address is still the same so Phone A tries to create a connection. Most likely Phone B is behind a NAT, so how this connection is created? Phone A only knows Phone B's public IP and the "router" doesn't have the connection between Phone A and B in it's NAT table. So how I view it, it is not possible, but hoping for some way out.