WhatsApp, kullanılmadığı zamanlarda nasıl mesaj alabilir?


23

WhatsApp'ın kullanılmadığı zamanlarda nasıl mesaj alabildiğini merak ediyorum.

Yani, WhatsApp'ın cep telefonu şebekesi yerine İnternet bağlantısını kullanarak çalıştığını biliyorum. Telefonuma saatlerdir dokunmadığımı hayal edin. O anda bir arkadaş bana WhatsApp ile ilgili bir mesaj yolladı. Hemen anlıyorum. Bu, WhatsApp'ın İnternet bağlantısını her zaman bağlı tuttuğu anlamına mı geliyor? Bu, WhatsApp'ın telefondaki bağlantı noktalarını açan ve bir sunucu görevi gördüğü anlamına mı geliyor? Ya da belki uzun süren bir HTTP isteği?



Yanıtlar:


18

İ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):

  1. WhatsApp başlar ve iki yuva açar: Dinlemek için biri diğeri sunucuya mesaj göndermek için.
  2. WhatsApps ilk sokette dinlemeye başlar.
  3. WhatsApp, telefon numaranızı ve dinleme soketinin portunu içeren bir mesajı sunucuya gönderir ve bir onay bekler.
  4. Sunucu, telefon ve port numaralarını mesaja ve mesajın geldiği IP adresini kaydeder.
  5. Sunucu uygulamaya bir onay gönderir.
  6. Uygulamaya bildirim alır ve mesaj soketini kapatır.
  7. Hedef olarak telefon numaranızı içeren bir mesaj sunucuya girer.
  8. 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).


2
Whatsapp Play Store uygulamasına bağlı mı? Wikipedia bağlantısından alıntı yapma: Market uygulaması yüklü olan Android 2.2 veya daha üst sürümleri çalıştıran cihazlar gerektirir. Yani tam olarak bu olmayabilir, ama kesinlikle aynı ilkelere dayanıyor. Ancak cevabınızı daha değerli kılmak (ve daha fazla puan almak için), makalenin 2. paragrafından bazı alıntılar eklemek isteyebilirsiniz;
Izzy

Oldukça haklısın, @Izzy, daha fazla ayrıntı eklemeliydim. Yine de, SGS3'ümde Subway yazmasında otururken yapmak zordu. Şimdi cevabı güncelledim. :-)
Trebor Rude

3
Nat, mobil ip üzerinde olsa bile, adım 8'e izin vermeyecek, bu asla olmayacak. olası yollar Xmpp ya da uzun süredir oy kullanma http

1
Gerekli izne sahip. Google Play Store'da "İnternetten veri al" olarak listelenir. Bkz android.stackexchange.com/a/61794
nyuszika7h

2
Ne yazık ki, gelen TCP bağlantıları mobil cihazlarda imkansızdır. Bunların büyük çoğunluğu ortak IP adreslerine sahip değiller ve hatta (örneğin IPv6 yetenekli operatörler için) gelen bağlantılara genellikle filtre uygulanmaktadır. Günümüzde çoğu uygulama ya Google’ın push servislerini kullanıyor ya da kendi kalıcı istemcisini sunucu soketi bağlantısına (en önemlisi Facebook) kullanıyor. WhatsApp benim deneyimime göre melez bir yaklaşım izliyor gibi görünüyor: Eğer GCM mevcutsa, kalıcı priz birkaç dakika boşta kaldıktan sonra kapanıyor.
lxgr

8

WhatsApp'in dinleme portu açmadığından kesinlikle eminim. çoğu ISS işe yaramayan gelen istekleri engeller.

WhatsApp'ın bir servisi var. Temel olarak bu, teknik olarak WhatsApp'tan asla vazgeçmediğiniz anlamına gelir. Bu yüzden, "çalışmıyorken" mesaj alma şekliniz WhatsApp, çalıştırırken aldığınız mesajların aynısıdır.

İstemci, bu durumda WhatsApp, sunucuya bağlanır. Müşteri bu bağlantıyı korur. Sunucunun söyleyecek yeni bir şeyi olduğunda, istemciye bu bağlantı yoluyla gönderir. Hepsi bu.

İlk tahminin doğru.

WhatsApp'ın gerçek bir çıkış mekanizması yok, bunu görün .

WhatsApp oturum kapatma mekanizmasına sahip değil. Uygulama, telefonunuzu aktif olarak kullanmadığınızda bile mesajlarınızı hızlı bir şekilde almanız için her zaman bağlanacak şekilde tasarlanmıştır. Bu SMS'in nasıl çalıştığına benzer ve WhatsApp mesajlarının neredeyse anında iletilmesine izin veriyor.


2
Kişisel bağlantı Nokia içindir - Ben kendi sitesinde Android için benzer bir soru bulamadı. Aynı şeyin Android için de geçerli olduğundan emin misiniz? Android SSS bölümündeki bu Soru, sürekli bağlı bir sunucu / müşteri yerine, PUSH mimarisini kullandığını ("Mesajların telefonunuza ulaşması çok mu uzun sürüyor?" Bölümü) altında olduğunu gösterir.
Dylan Yaga,

2
@DylanYaga doğru. Örneğin, bu cevabın son paragrafına ve Trebors'un cevabına bakınız .
Izzy

Bu en mantıklı görünüyor. Çoğu zaman bu hizmetlere push hizmetleri denir, ancak müşterinin bir bağlantı noktası açacağını ve aslında yerel bir sunucu olarak davranacağını hayal edemiyorum. Bu kesinlikle güvenlik sorunlarına neden olur.
SPRBRN

1

Onların SSS onlar GCM'yi kullanmak önerir. "Mesajların telefonunuza ulaşması hala çok mu uzun sürüyor?" Yanıtını kontrol edin.


SSS’nin önerdiği gibi haklısınız, ancak Trebor Rude’un belirttiği gibi, uygulamanın gerekli izni yok, bu yüzden GCM’yi kullanamıyorlar.
Dan Hulme

2
Gerekli izne sahip. Google Play Store'da "İnternetten veri al" olarak listelenir. Bkz android.stackexchange.com/a/61794
nyuszika7h

2
Gördüğüm kadarıyla eğer varsa, GCM kullanıyorlar. Herhangi bir nedenle kullanılamıyorsa (örneğin Play servisi olmayan bir cihazda veya ağ tarafından filtrelenmişse), soket süresiz olarak tutulur.
lxgr

0

Diğer uygulamalar gibi Whatsapp servis olarak çalıştırılır. (Siz her zaman bağlısınız) Size gönderilen mesajlar, 30 güne kadar whatsapp sunucusunda saklanır, hangi süre içinde whatsapp'ınızın mesajı aldığını ve aldığını onayladığında aktif olmalıdır. Bireysel hesaplar @ whatsapp.net kullanıcı telefon numarasıyla saklanır


1
30 gün . Lütfen bu gerçek için kaynak link
beeshyams

0

Ben böyle olması gerektiğini düşünüyorum:

Whatsapp yeniyken, PNS tabanlı bir çözüm kullanacaktı, bu PNS sadece cihazı uyandıracaktı ve bir kez uyandığında, whatsapp sunucusuna bir soket bağlantısı oluşturabilecekti.

WhatsApp popüler olduğunda, çoğu cihaz yerli uygulama ve yerli uygulama olarak gelmeye başlamaz. Benim samsung s8 içinde whatsapp kaldıramıyorum, güç tasarrufu modu onu öldüremez

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.