Tengo curiosidad acerca de cómo WhatsApp puede recibir mensajes cuando no está en uso.
Quiero decir, entiendo que WhatsApp funciona utilizando la conexión a Internet en lugar de la red de teléfonos celulares. Imagina que no he tocado mi teléfono en horas. En ese momento, un amigo me envía un mensaje en WhatsApp. Lo entiendo de inmediato. ¿Eso significa que WhatsApp mantiene la conexión a Internet conectada en todo momento? ¿Eso significa que WhatsApp actúa como un servidor, abriendo puertos en el teléfono? ¿O tal vez una solicitud HTTP de larga duración?
networking
whatsapp-messenger
Ram Rachum
fuente
fuente
Respuestas:
Al principio, pensé que probablemente era una instancia de mensajería de nube a dispositivo de Android , pero no puede serlo: WhatsApp no declara los permisos necesarios y funciona en Eclair (Android 2.1), mientras que la mensajería de nube a dispositivo ( y su reemplazo, Google Cloud Messaging) requieren al menos Froyo (Android 2.2).
Sin embargo, lo más probable es que sea algún tipo de servicio de notificación push . Es imposible decir exactamente cómo se implementa sin acceso al código fuente de WhatsApp.
Sin embargo, la parte sobre la posibilidad de recibir mensajes cuando no está en uso es relativamente fácil de explicar. Es casi seguro que la aplicación tiene un servicio que se ejecuta en segundo plano para registrarse periódicamente con el servidor (o recibir el envío del servidor, o lo que sea que haga). Cuando recibe un mensaje, el servicio muestra una notificación.
En cuanto a la pregunta sobre cómo el servidor podría hacer un empuje, aquí hay una posibilidad (nuevamente, no puedo verificar sin el código fuente):
Para que esto funcione, la aplicación necesitaría monitorear el estado de la conexión de red y restablecer el socket de escucha / reenviar el mensaje de registro cuando sea necesario (si la dirección IP cambia, por ejemplo).
fuente
Estoy seguro de que WhatsApp NO abre ningún puerto de escucha. la mayoría de los ISP bloquean las solicitudes entrantes, eso no funcionaría.
WhatsApp tiene un servicio. Básicamente eso significa que técnicamente nunca sales de WhatsApp. Entonces, la forma en que recibe mensajes mientras "no está ejecutando" WhatsApp es exactamente la misma forma en que los recibe cuando lo está ejecutando.
El cliente, en este caso WhatsApp, se conecta al servidor. El cliente mantiene esa conexión. Cuando el servidor tiene algo nuevo que decir, lo envía al cliente a través de esa conexión, y eso es todo.
Tu primera suposición es correcta.
WhatsApp no tiene un mecanismo de cierre de sesión verdadero, mira esto .
fuente
Sus preguntas frecuentes sugieren que usan GCM. Verifique la respuesta a "¿Los mensajes aún tardan demasiado en llegar a su teléfono?"
fuente
Whatsapp, como otras aplicaciones, se ejecuta como servicio. (Siempre está conectado) Los mensajes que se le envían se almacenan en el servidor de WhatsApp hasta 30 días, dentro de los cuales su WhatsApp debe estar activo para recibir y acusar recibo del mensaje. Las cuentas individuales se almacenan con el número de teléfono del usuario @ whatsapp.net
fuente
Creo que debería ser así:
Cuando WhatsApp era nuevo, habría utilizado una solución basada en PNS, este PNS solo activaría el dispositivo y, una vez que se activa, puede crear una conexión de socket al servidor de WhatsApp.
Después, cuando WhatsApp es popular, ahora la mayoría de los dispositivos no se eliminarán como aplicación nativa y aplicación nativa. En mi Samsung S8 no puedo desinstalar WhatsApp, el modo de ahorro de energía no puede matarlo
fuente