Dado que las aplicaciones de iOS no pueden ejecutarse como servicio en segundo plano, ¿cómo funciona ahora WhatsApp para la web en iOS? ¿Qué ha cambiado?

Estás absolutamente equivocado al suponer que las aplicaciones de iOS no pueden ejecutarse como servicio en segundo plano. Hay un conjunto limitado de usos para el procesamiento en segundo plano, incluidas las aplicaciones de VoIP, la reproducción de sonido y la realización de una pequeña cantidad de procesamiento a intervalos regulares.

WhatsApp para la web funciona estableciendo una conexión de socket entre el navegador y la aplicación de WhatsApp para el iPhone. Creo que utilizan esa conexión para empujar directamente los mensajes de la app al navegador, en lugar de distribuir un montón de mensajes push a todos los clientes suscritos.

Se podría ver la app para iPhone como un canal de retransmisión entre los servidores de WhatsApp y el navegador.

La comunicación directa entre el navegador y los servidores de WhatsApp, y con la app del iPhone y los servidores de WhatsApp, duplica la información en 2 canales. Esta información se envía al usuario de todos modos, por lo que es un desperdicio de recursos hacer esto dos veces. Para ello, la aplicación del iPhone simplemente copia la información de la aplicación al navegador.

Puedes imaginar el impacto de la duplicación de datos en una red tan grande como WhatsApp. Digamos que tienen 1000 servidores para alimentar la mensajería entre 1 millón de clientes. Si todos esos clientes quieren sus mensajes también en el navegador, ahora tienen… 2 millones de clientes. Dado que su sistema escala de forma predecible, necesitan 1000 servidores más.

Para la información esencialmente duplicada…

En cambio, deben haber optado por actualizar sólo una parte de su red y aprovechar la red basada en pares que ya existe: los iPhones de sus usuarios. I’m sospecha que incluso envían los datos entre el navegador y el iPhone en la red local, eliminando esencialmente su red de servidores de la ecuación. Inteligente, ¿verdad?