İlk başta bunun büyük olasılıkla cihaz mesajlaşmasına Android bulutunun bir örneği olduğunu düşünmüştüm , fakat olamaz: WhatsApp gerekli izinleri açıklamaz ve buluttan cihaza mesajlaşma yaparken Eclair'de (Android 2.1) çalışır. ve yerine, Google Cloud Messaging) en az Froyo (Android 2.2) gerektirir.
Ancak, büyük olasılıkla bir çeşit itme bildirim servisi olabilir . WhatsApp'ın kaynak koduna erişmeden tam olarak nasıl uygulandığını söylemek imkansız.
Bununla birlikte, kullanılmadığı zamanlarda mesaj alabilmesi ile ilgili kısmı açıklanması nispeten kolaydır. Uygulamanın neredeyse kesinlikle, belirli aralıklarla sunucuyla kontrol etmek için arka planda çalışan bir hizmeti var (veya sunucuyu zorla alıyor ya da ne yaparsa). Bir mesaj aldığınızda, servis bir bildirim açar.
Sunucunun nasıl bir itme yapabileceği sorusuna gelince, işte bir olasılık (yine, kaynak kodu olmadan doğrulayamıyorum):
- WhatsApp başlar ve iki yuva açar: Dinlemek için biri diğeri sunucuya mesaj göndermek için.
- WhatsApps ilk sokette dinlemeye başlar.
- WhatsApp, telefon numaranızı ve dinleme soketinin portunu içeren bir mesajı sunucuya gönderir ve bir onay bekler.
- Sunucu, telefon ve port numaralarını mesaja ve mesajın geldiği IP adresini kaydeder.
- Sunucu uygulamaya bir onay gönderir.
- Uygulamaya bildirim alır ve mesaj soketini kapatır.
- Hedef olarak telefon numaranızı içeren bir mesaj sunucuya girer.
- Sunucu, telefon numaranızla ilişkilendirdiği IP adresini ve bağlantı noktası numarasını kullanır ve mesajı bu mesajı telefonunuza iletmek için kullanır.
Bunun çalışması için, uygulamanın ağ bağlantısının durumunu izlemesi ve dinleme soketini sıfırlaması / gerektiğinde kayıt mesajını tekrar göndermesi gerekir (örneğin IP adresi değişirse).