Cómo configurar un servidor que me da una función como las llamadas de WhatsApp

El servicio básico puede ser como cualquier API RESTful: un directorio respaldado por la base de datos de quién está actualmente registrado, con códigos de notificación push para cada cliente y la infraestructura para enviar una notificación push como resultado de una llamada. Esa parte es fácil y se puede escribir en cualquier lenguaje de servidor estándar: NodeJS, Rails, Java, etc.

Cuando un cliente llama a otro, el cliente llamante solicitaría una notificación push al cliente receptor, y ambos iniciarían una negociación VoIP.

Para algunos consejos clave sobre este último, vea mi respuesta aquí:

¿Cómo puedo desarrollar una aplicación que tenga características como llamadas de WhatsApp en Android?

La respuesta corta es que no es difícil hacerlo desde un navegador que usa WebRTC, o desde una aplicación híbrida (Cordova) que usa algo como:

https://github.com/alongubkin/ph…

Sin embargo, el uso de WebRTC requiere un poco de aprendizaje, el cual toco en el enlace de arriba.