Je suis curieux de savoir comment WhatsApp est capable de recevoir des messages lorsqu'il n'est pas utilisé.
Je veux dire, je comprends que WhatsApp fonctionne en utilisant la connexion Internet plutôt que le réseau de téléphone portable. Imaginez que je n'ai pas touché mon téléphone depuis des heures. À ce moment, un ami m'envoie un message sur WhatsApp. Je l'obtiens immédiatement. Cela signifie-t-il que WhatsApp maintient la connexion Internet connectée à tout moment? Est-ce à dire que WhatsApp agit comme un serveur, ouvrant des ports sur le téléphone? Ou peut-être une requête HTTP de longue durée?
networking
whatsapp-messenger
Ram Rachum
la source
la source
Réponses:
Au début, je pensais qu'il s'agissait très probablement d'une instance de messagerie cloud vers appareil Android , mais cela ne peut pas être: WhatsApp ne déclare pas les autorisations nécessaires, et cela fonctionne dans Eclair (Android 2.1), tandis que la messagerie cloud vers appareil ( et son remplacement, Google Cloud Messaging) nécessitent au moins Froyo (Android 2.2).
Cependant, il s'agit très probablement d'une sorte de service de notification push . Il est impossible de dire exactement comment il est mis en œuvre sans accéder au code source de WhatsApp.
La partie sur le fait qu'il puisse recevoir des messages lorsqu'il n'est pas utilisé est cependant relativement facile à expliquer. L'application a presque certainement un service qui s'exécute en arrière-plan pour se connecter périodiquement avec le serveur (ou recevoir la poussée du serveur, ou quoi que ce soit). Lorsque vous recevez un message, le service affiche une notification.
Quant à la question de savoir comment le serveur pourrait faire un push, voici une possibilité (encore une fois, je ne peux pas vérifier sans code source):
Pour que cela fonctionne, l'application doit surveiller l'état de la connexion réseau et réinitialiser la prise d'écoute / renvoyer le message d'enregistrement si nécessaire (si l'adresse IP change, par exemple).
la source
Je suis sûr que WhatsApp n'ouvre aucun port d'écoute. la plupart des FAI bloquent les demandes entrantes, cela ne fonctionnerait pas.
WhatsApp a un service. Fondamentalement, cela signifie que techniquement, vous ne quittez jamais WhatsApp. Ainsi, la façon dont vous recevez des messages lorsque vous "n'exécutez pas" WhatsApp est exactement la même manière que vous les recevez lorsque vous l'exécutez.
Le client, dans ce cas WhatsApp, se connecte au serveur. Le client maintient cette connexion. Lorsque le serveur a quelque chose de nouveau à dire, il l'envoie au client via cette connexion, et c'est tout.
Votre première supposition est correcte.
WhatsApp n'a pas de véritable mécanisme de déconnexion, voyez ceci .
la source
Leur FAQ suggère qu'ils utilisent GCM. Vérifiez la réponse à "Les messages mettent-ils encore trop de temps à atteindre votre téléphone?"
la source
Whatsapp comme les autres applications est exécuté en tant que service. (Vous êtes toujours connecté) Les messages qui vous sont envoyés sont stockés sur le serveur Whatsapp jusqu'à 30 jours, période pendant laquelle votre Whatsapp doit être actif pour recevoir et accuser réception du message. Les comptes individuels sont stockés avec le numéro de téléphone de l'utilisateur @ whatsapp.net
la source
Je pense que ça devrait être comme ça:
Lorsque Whatsapp était nouveau, il aurait utilisé une solution basée sur PNS, ce PNS ne ferait que réveiller l'appareil et une fois qu'il se réveille, il peut créer une connexion socket avec le serveur Whatsapp.
Après que WhatsApp soit populaire, la plupart des appareils sont désormais disponibles en tant qu'application native et application native. Dans mon Samsung S8, je ne peux pas désinstaller WhatsApp, le mode d'économie d'énergie ne peut pas le tuer
la source