¿Qué tecnologías recomendarías para una aplicación en tiempo real?

Para enviar datos a los clientes, hay dos cosas principales que debe considerar:

  1. Usando un marco web controlado por eventos (a veces llamado hilo verde), para evitar que cada conexión de cliente ate un hilo completo. Los lenguajes como Node.js, Go y C # están controlados por eventos de forma nativa, por lo que puede elegir cualquier marco web en esos idiomas. Para la mayoría de los otros lenguajes de programación (por ejemplo, Python, Ruby, PHP), el desarrollo impulsado por eventos generalmente no es estándar, por lo que es importante elegir un marco capaz. Por ejemplo: Twisted (Python), Goliath (Ruby), Ratchet (PHP).
  2. Usando un patrón de enrutamiento de publicación-suscripción. Con la publicación-suscripción, los “suscriptores” (entidades que escuchan datos) eligen temas / canales para escuchar, y los “editores” (entidades que envían datos) envían cargas de datos asociados con un tema / canal en particular. Por ejemplo, cuando un cliente se conecta a su servidor porque quiere escuchar datos, podría especificar una lista de canales que le interesan. Su servidor podría mantener un mapa de canales a los clientes, y cuando hay datos para enviar por un canal, usted busca los clientes y se los envía. Algunos marcos tienen estas capacidades integradas, por ejemplo Socket.io (Node.js).

Por cierto, trabajo en un proyecto de código abierto (Pushpin) que intenta simplificar esta situación.

El lado receptor de su aplicación de servidor debería ser más sencillo que enviarlo a los clientes. Podría tener un trabajo en segundo plano que sondee la API ascendente en un intervalo y envíe los datos recibidos a los clientes conectados. El lenguaje o marco para esta parte no debería importar. Aún mejor sería si la API ascendente tuviera una forma de enviarle datos para que no tenga que sondearla. Puede ver si su proveedor de API ascendente tiene una opción para eso, o pedirles que agreguen dicha capacidad.

Centrarse en la “aplicación en tiempo real” Google Firebase es la mejor opción.