I'm currently thinking about writing a text/voice chat tool that is fully e2e encrypted and runs on Android, iOS, Linux, OSX and Windows. (Btw if you know a tool that already does all of these things and is pretty much plug-and-play, please let me know!)
And at the moment I'm asking myself if I really need to route every message and every call through centralized a server. Wouldn't P2P be much more efficient?
This is the list of cons and pros that I could think about for P2P:
Cons
- exposes the users IP address
- both the sender and the receiver have to be online at the same time to exchange a message
- IP address changes cause disconnects
Pros
- lower latency
- fewer points of connection failure
- higher quality calls
- server doesn't need to be as big
- more security (less potential interception points, data can't accidentally be stored on the server etc)
- temporary down-times of the server wouldn't matter too much.
Well I came to the conclusion that I should give the user an option to choose between the two.
But would it even be worth the effort?
I remember having a ton of problems (especially with computer games) that used P2P connections. A lot of the times it didn't seem possible without forwarding ports in your router...
Now I'm wondering if there are any issues with this on the mobile Internet because I've never seen a mobile port forwarding option or the like.