Estou curioso para saber como o WhatsApp consegue receber mensagens quando não está em uso.
Quero dizer, eu entendo que o WhatsApp funciona usando a conexão com a Internet e não a rede de telefones celulares. Imagine que não toquei meu telefone há horas. Nesse momento, um amigo me envia uma mensagem no WhatsApp. Eu entendo imediatamente. Isso significa que o WhatsApp mantém a conexão com a Internet sempre ligada? Isso significa que o WhatsApp atua como um servidor, abrindo portas no telefone? Ou talvez uma solicitação HTTP de longa duração?
networking
whatsapp-messenger
Ram Rachum
fonte
fonte
Respostas:
No começo, pensei que provavelmente era uma instância da nuvem do Android para o sistema de mensagens do dispositivo , mas não pode ser: o WhatsApp não declara as permissões necessárias e funciona no Eclair (Android 2.1), enquanto o sistema de mensagens da nuvem para o dispositivo ( e sua substituição, o Google Cloud Messaging) requer pelo menos o Froyo (Android 2.2).
No entanto, é mais provável que seja algum tipo de serviço de notificação por push . É impossível dizer exatamente como é implementado sem acesso ao código-fonte do WhatsApp.
A parte de poder receber mensagens quando não está em uso é relativamente fácil de explicar. O aplicativo quase certamente possui um serviço que é executado em segundo plano para fazer check-in periodicamente com o servidor (ou receber o push do servidor ou o que ele fizer). Quando você recebe uma mensagem, o serviço exibe uma notificação.
Quanto à questão de como o servidor poderia fazer um push, eis uma possibilidade (novamente, não posso verificar sem o código-fonte):
Para que isso funcione, o aplicativo precisará monitorar o estado da conexão de rede e redefinir o soquete de escuta / reenviar a mensagem de registro quando necessário (se o endereço IP mudar, por exemplo).
fonte
Tenho certeza de que o WhatsApp NÃO abre nenhuma porta de escuta. a maioria dos ISPs bloqueia solicitações recebidas, que não funcionariam.
O WhatsApp tem um serviço. Basicamente, isso significa que tecnicamente você nunca sai do WhatsApp. Portanto, a maneira como você recebe mensagens enquanto "não está executando" o WhatsApp é exatamente da mesma maneira que recebe quando está executando.
O cliente, neste caso o WhatsApp, se conecta ao servidor. O cliente mantém essa conexão. Quando o servidor tem algo novo a dizer, ele o envia ao cliente através dessa conexão, e é tudo.
Seu primeiro palpite está correto.
O WhatsApp não possui um mecanismo de logoff verdadeiro, veja isso .
fonte
As perguntas frequentes sugerem que eles usam o GCM. Verifique a resposta para "As mensagens ainda estão demorando muito para chegar ao seu telefone?"
fonte
O WhatsApp como outros aplicativos é executado como serviço. (Você está sempre conectado) As mensagens enviadas a você são armazenadas no servidor whatsapp até 30 dias, período em que seu whatsapp deve estar ativo para receber e confirmar o recebimento da mensagem. Contas individuais são armazenadas com o número de telefone do usuário @ whatsapp.net
fonte
Eu acho que deveria ser assim:
Quando o whatsapp era novo, ele usava a solução baseada em PNS, esse PNS apenas ativava o dispositivo e, quando acordava, podia criar uma conexão de soquete ao servidor whatsapp.
Depois que o whatsapp é popular agora, a maioria dos dispositivos vem como aplicativo nativo e aplicativo nativo não será eliminado. No meu samsung s8 eu não consigo desinstalar o whatsapp, o modo de economia de energia não pode matá-lo
fonte