Au début, j'ai pensé qu'il s'agissait probablement d'un cas de Messagerie Android entre le nuage et l'appareil mais ce n'est pas possible : WhatsApp ne déclare pas les autorisations nécessaires, et il fonctionne sous Eclair (Android 2.1), alors que la messagerie cloud to device (et son remplaçant, Google Cloud Messaging) nécessite au moins Froyo (Android 2.2).
Cependant, il est plus probable que ce soit une sorte de service de notification push . Il est impossible de dire exactement comment elle est mise en œuvre sans avoir accès au code source de WhatsApp.
La partie concernant la possibilité de recevoir des messages lorsqu'elle n'est pas utilisée est relativement facile à expliquer. L'application a très certainement un service qui s'exécute en arrière-plan pour vérifier périodiquement le serveur (ou recevoir le push du serveur, ou quoi qu'il en soit). Lorsque vous recevez un message, le service fait apparaître 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 le code source) :
- WhatsApp démarre et ouvre deux sockets : Une pour écouter et une pour envoyer un message au serveur.
- WhatsApps commence à écouter sur le premier socket.
- WhatsApp envoie un message contenant votre numéro de téléphone et le port du socket d'écoute au serveur et attend un accusé de réception.
- Le serveur enregistre les numéros de téléphone et de port du message ainsi que l'adresse IP d'où provient le message.
- Le serveur envoie un accusé de réception à l'application.
- L'application reçoit l'accusé de réception et ferme le connecteur de message.
- Un message avec votre numéro de téléphone comme destination arrive sur le serveur.
- Le serveur utilise l'adresse IP et le numéro de port qu'il a associés à votre numéro de téléphone et utilise ces informations pour envoyer le message à votre téléphone.
Pour que cela fonctionne, l'application devrait surveiller l'état de la connexion réseau et réinitialiser le socket d'écoute / renvoyer le message d'enregistrement lorsque cela est nécessaire (si l'adresse IP change, par exemple).
0 votes
Voir aussi whatsapp.com/faq/en/s60/20910578
0 votes
Voir aussi highscalability.com/blog/2014/2/26/