This can be a broad but specific question. The concept is the fact that you want to match a 'buddy' functionality to some communications application. Very broadly, In my opinion the application clients would connect with a central database/auth service which may supply the buddy data after which allow client applications for connecting straight to eachother, without passing communications with the server.

Particularly, however, what solutions, software, items, servers, technologies, etc might be best to implement to deal with this type of task?

Thank you for reading through and reactions tend to be appreciated.

//edit: the com application might run on the linux distro, might be internet based, or both

To behave such as this is comparable to personal files discussing architecture. Where you've got a central store for all your buddy information. This could possess a service-based API that the other programs would be familiar with. The buddy server will have to know of the client programs as well as their physical locations. Therefore allows the customer programs to log to the buddy server, locate another clients in the region, after which connect with them directly.

Where this turns into a issue is making your way around fire wall issues. The clients would need to behave as small-servers here. When a client logs to the buddy server, finds out another clients it may want to interact with, it'll then need to establish communications together...occasionally via a firewall. This is when I'm lost when i haven't carried this out facet of it.

The other way round this really is and also hardwearing . clients drenched to the buddy server whereby all communications are routed with the server towards the other drenched on clients. This can be a more resource intensive manner to approach this kind of problem...and never the recommended route.