Jestem ciekawy, jak WhatsApp może odbierać wiadomości, gdy nie są używane.
Rozumiem, że WhatsApp działa przy użyciu połączenia internetowego, a nie sieci komórkowej. Wyobraź sobie, że nie dotknąłem telefonu od kilku godzin. W tym momencie znajomy wysyła mi wiadomość na WhatsApp. Rozumiem to natychmiast. Czy to oznacza, że WhatsApp utrzymuje połączenie z Internetem przez cały czas? Czy to oznacza, że WhatsApp działa jak serwer, otwierając porty w telefonie? A może długo działające żądanie HTTP?
networking
whatsapp-messenger
Ram Rachum
źródło
źródło
Odpowiedzi:
Na początku myślałem, że jest to najprawdopodobniej przypadek przesyłania wiadomości z chmury na urządzenie z Androidem , ale tak nie może być: WhatsApp nie deklaruje niezbędnych uprawnień i działa w Eclair (Android 2.1), podczas gdy przesyłanie z chmury do urządzenia ( i jego wymiana, Google Cloud Messaging) wymaga przynajmniej Froyo (Android 2.2).
Jednak najprawdopodobniej jest to rodzaj usługi powiadomień wypychanych . Nie można dokładnie określić, w jaki sposób jest realizowany bez dostępu do kodu źródłowego WhatsApp.
Jednak część tego, że jest w stanie odbierać wiadomości, gdy nie są używane, jest stosunkowo łatwa do wyjaśnienia. Aplikacja prawie na pewno ma usługę działającą w tle, aby okresowo logować się na serwerze (lub odbierać wypychanie serwera lub cokolwiek robi). Po otrzymaniu wiadomości usługa wyświetla powiadomienie.
Jeśli chodzi o pytanie, w jaki sposób serwer może wykonać wypychanie, oto możliwość (ponownie nie mogę zweryfikować bez kodu źródłowego):
Aby to zadziałało, aplikacja musiałaby monitorować stan połączenia sieciowego i resetować gniazdo nasłuchiwania / w razie potrzeby ponownie wysyłać komunikat rejestracyjny (na przykład, jeśli zmieni się adres IP).
źródło
Jestem pewien, że WhatsApp NIE otwiera żadnych portów nasłuchujących. większość dostawców usług internetowych blokuje przychodzące żądania, które nie działałyby.
WhatsApp ma usługę. Zasadniczo oznacza to, że technicznie nigdy nie rezygnujesz z WhatsApp. Tak więc sposób odbierania wiadomości podczas „nieużywania” WhatsApp jest dokładnie taki sam, jak sposób odbierania ich podczas uruchamiania.
Klient, w tym przypadku WhatsApp, łączy się z serwerem. Klient utrzymuje to połączenie. Gdy serwer ma coś nowego do powiedzenia, wysyła go do klienta za pośrednictwem tego połączenia, i to wszystko.
Twoje pierwsze przypuszczenie jest prawidłowe.
WhatsApp nie ma prawdziwego mechanizmu wylogowania, zobacz to .
źródło
Ich FAQ sugeruje używają GCM. Sprawdź odpowiedź na pytanie „Czy wiadomości wciąż docierają do telefonu?”
źródło
Whatsapp, podobnie jak inne aplikacje, działa jako usługa. (Zawsze jesteś podłączony) Wiadomości wysyłane do Ciebie są przechowywane na serwerze WhatsApp do 30 dni, w tym czasie WhatsApp powinien być aktywny, aby odbierać i potwierdzać otrzymanie wiadomości. Poszczególne konta są przechowywane z numerem telefonu użytkownika @ whatsapp.net
źródło
Myślę, że powinno tak być:
Gdy WhatsApp był nowy, używałby rozwiązania opartego na PNS, ten PNS po prostu budziłby urządzenie, a gdy się obudzi, może utworzyć połączenie gniazdowe z serwerem WhatsApp.
Po tym, jak WhatsApp jest teraz popularny, większość jego urządzeń nie będzie zabijana jako aplikacja natywna i natywna. W moim samsung s8 nie mogę odinstalować WhatsApp, tryb oszczędzania energii nie może go zabić
źródło