Entendendo a arquitetura e design do sistema do WhatsApp

Resumo

A criptografia de ponta a ponta do WhatsApp pode não ser tão protegida pela privacidade quanto se poderia esperar, apesar de sua segurança teórica. Este artigo explora a arquitetura e o design do sistema do WhatsApp, lançando luz sobre seus trabalhos internos.

Pontos chave

1. Roxdavirox/Socket-Whatsapp: Este compromisso não pertence a nenhum ramo neste repositório e pode ser de um garfo fora do repositório.

2. Nome já em uso: Criar um ramo com um nome que já existe como uma tag pode levar a um comportamento inesperado. O usuário é solicitado a confirmar a criação do ramo.

3. Lançando o Github Desktop: Se nada acontecer, o usuário é aconselhado a baixar o GitHub Desktop e tentar novamente.

4. Lançando Xcode: Se nada acontecer, o usuário é aconselhado a baixar o xcode e tentar novamente.

5. Lançando o código do Visual Studio: O usuário está informado de que o espaço de codificina será aberto assim que estiver pronto. Se houve um problema em preparar o espaço de codificina, eles são incentivados a tentar novamente.

6. Última confirmação: Detalhes da última confirmação feita ao repositório são exibidos.

7. Estatísticas Git: Uma visão geral das estatísticas do Git para o repositório é fornecida.

8. Arquivos: Informações sobre os arquivos no repositório são mostradas, incluindo uma falha em carregar as informações mais recentes de compromisso.

9. Leia-me.MD: Uma breve descrição da biblioteca Baileys, que é um nó puro.Implementação JS da API da Web do WhatsApp sem a necessidade de selênio ou qualquer outro navegador. Ele usa WebSocket diretamente para interagir com o WhatsApp Web.

10. Uso de Baileys: Instruções sobre como instalar Baileys a partir da NPM e importá -lo para o código são fornecidas.

Perguntas e respostas:

1. Qual é o objetivo do commit Roxdavirox/Socket-Whatsapp?
O objetivo deste compromisso não é claro, pois não pertence a nenhum ramo no repositório e pode ser de um garfo fora do repositório.

2. Que questão em potencial pode surgir ao criar um ramo com um nome que já existe como uma tag?
Criar um ramo com um nome que já existe como uma tag pode causar comportamento inesperado. É aconselhável confirmar antes de criar esse ramo.

3. O que deve ser feito se nada acontecer ao lançar o Github Desktop?
Se nada acontecer ao lançar a área de trabalho do GitHub, é recomendável fazer o download e tentar novamente.

4. O que deve ser feito se nada acontecer ao lançar o Xcode?
Se nada acontecer ao lançar o Xcode, baixá -lo e tentar novamente é sugerido.

5. Que ação deve ser tomada se houver um problema na preparação do espaço de codificação ao lançar o código do Visual Studio?
Se houver um problema na preparação do espaço de codificina ao lançar o código do Visual Studio, é melhor tentar novamente.

6. Que informação a seção “mais recente comprometimento” fornece?
A seção “mais recente comprometimento” exibe detalhes do commit mais recente feito ao repositório.

7. O que mostra a seção “estatísticas git”?
A seção “Git Stats” fornece uma visão geral das estatísticas do Git para o repositório.

8. Quais informações são apresentadas na seção “Arquivos”?
A seção “Arquivos” mostra informações sobre os arquivos no repositório, incluindo quaisquer falhas em carregar as informações mais recentes de compromisso.

9. O que é Baileys?
Baileys é um nó puro.Implementação JS da API da Web do WhatsApp. Ele permite a comunicação direta com o WhatsApp Web usando um webSocket, sem a necessidade de um navegador como o Selenium.

10. Como os baileys podem ser instalados e importados?
Baileys pode ser instalado a partir do NPM usando o comando “NPM Install Github: Adiwajshing/Baileys.”Ele pode ser importado para o código usando” const whatsappweb = requer (‘baileys’).”

Experiência e recomendações pessoais:

Na minha experiência pessoal, entender a arquitetura e o design do sistema do WhatsApp tem sido crucial no desenvolvimento de aplicativos que se integrem à plataforma. Baileys, sendo um nó puro.A implementação do JS, tornou muito mais fácil interagir com o WhatsApp Web sem a necessidade de ferramentas de automação do navegador como o Selenium. Eu recomendo aproveitar essas bibliotecas para quem deseja criar aplicativos sobre a infraestrutura do WhatsApp.

Entendendo a arquitetura e o design do sistema do WhatsApp

Embora a criptografia de ponta a ponta possa fazer você se sentir seguro em teoria. Na prática, a criptografia de ponta a ponta é’T tão protegendo a privacidade quanto se poderia esperar.

Roxdavirox/Socket-Whatsapp

Este compromisso não pertence a nenhum ramo neste repositório e pode pertencer a um garfo fora do repositório.

Switch Branches/Tags

Tags de ramificações

Não foi possível carregar ramificações

Nada para mostrar

Não foi possível carregar tags

Nada para mostrar

Nome já em uso

Uma tag já existe com o nome da filial fornecida. Muitos comandos Git aceitam nomes de tag e ramificação; portanto, criar este ramo pode causar comportamento inesperado. Tem certeza que deseja criar este ramo?

Cancelar Criar

  • Local
  • Codespaces

Https github cli

Use Git ou Checkout com SVN usando o URL da Web.

Trabalhe rápido com nossa cli oficial. Saiba mais sobre a CLI.

Autenticação necessária

Faça login para usar os espaços de codificina.

Lançando o GitHub Desktop

Se nada acontecer, faça o download do GitHub Desktop e tente novamente.

Lançando o GitHub Desktop

Se nada acontecer, faça o download do GitHub Desktop e tente novamente.

Lançando Xcode

Se nada acontecer, faça o download do Xcode e tente novamente.

Lançando o código do Visual Studio

Seu espaço de código será aberto uma vez pronto.

Houve um problema para preparar seu espaço de código, por favor tente novamente.

Última confirmação

Estatísticas Git

arquivos

Falha ao carregar informações mais recentes de compromisso.

Última mensagem de confirmação

Comprometer o tempo

Leia-me.MD

API da web reversa de engenharia WhatsApp em nó puro.JS. Baileys não requer selênio ou qualquer outro navegador para interface com o WhatsApp Web, ele o faz diretamente usando um websocket.

Obrigado a Sigalor por escrever o guia para reverter a engenharia WhatsApp Web e graças a rimas pelo ir reimplementação.

Baileys é super fácil de usar:

  • Instale a partir do NPM usando o NPM Install Github: Adiwajshing/Baileys
  • Em seguida, importe em seu código usando

const Whatsappweb = exigir('Baileys') 

deixar cliente = novo Whatsappweb() cliente.conectar()

cliente.manipuladores.onconnected = () =>  / * Quando você é autenticado com sucesso com os servidores da web do WhatsApp */ > 

cliente.manipuladores.onUnReadMessage = (mensagem) =>  / * chamado quando você tem uma mensagem não lida pendente ou recebe uma nova mensagem */ > 

cliente.manipuladores.OnError = (erro) =>  / * chamado quando houve um erro */ > 

cliente.manipuladores.Presencepdated = (eu ia, presença) =>  / * chamado quando você recebe uma atualização sobre a presença de alguém */ > 

cliente.manipuladores.OnDisconnect = () =>  / * chamado quando a internet é desconectada */ > 

cliente.manipuladores.onUnReadMessage = (m) =>  const tipo de mensagem = cliente.getMessageType(m.mensagem) // Obtenha que tipo de mensagem é - texto, imagem, vídeo >

cliente.manipuladores.onUnReadMessage = (m) =>  const tipo de mensagem = cliente.getMessageType(m.mensagem) // Obtenha que tipo de mensagem é - texto, imagem, vídeo // Se a mensagem não for uma mensagem de texto se (tipo de mensagem !== Whatsappweb.Tipo de mensagem.texto && tipo de mensagem !== Whatsappweb.Tipo de mensagem.ExtendedText)  cliente.Decodemediamessage(m.mensagem, "nome do arquivo") // Extensão aplicada automaticamente .então (Meta => console.registro(m.chave.Remotejid + "Enviou a mídia, salva em:" + Meta.nome do arquivo)) .pegar (errar => console.registro("Erro na mensagem de decodificação:" + errar)) > >

cliente.enviar mensagem de texto(eu ia, txtMessage) 

Ou se você quiser citar outra mensagem:

cliente.enviar mensagem de texto(eu ia, txtMessage, QuotedMessage) 

cliente.SendMediamessage(eu ia, MediaBuffer, tipo de mídia, informações)

  • A miniatura pode ser gerada automaticamente para imagens e adesivos.
  • MediaBuffer é apenas um buffer que contém o conteúdo da mídia que você deseja enviar
  • MediaType representa o tipo de mensagem que você está enviando. Este pode ser um dos seguintes:

[[ Whatsappweb.Tipo de mensagem.imagem, // Uma mensagem de imagem Whatsappweb.Tipo de mensagem.vídeo, // Uma mensagem de vídeo Whatsappweb.Tipo de mensagem.Áudio, // Uma mensagem de áudio Whatsappweb.Tipo de mensagem.adesivo // Uma mensagem de adesivo ]

informações =  rubrica: "olá!", // a legenda para enviar com a mídia (embora não possa ser enviada com adesivos) miniatura: nulo, /* tem que ser um jpeg codificado da base 64 se você quiser enviar um polegar personalizado, ou defina como nulo se você não quiser enviar uma miniatura. Não entre neste campo se quiser gerar automaticamente um polegar */ Mimetype: "Aplicativo/PDF", /* Especifique o tipo de mídia (opcional para todos os tipos de mídia, exceto documentos), Para arquivos PDF => definido como "Application/PDF", Para arquivos txt => definido como "Application/txt" etc. */ gif: verdadeiro // Aplicável apenas a mensagens de vídeo, se o vídeo deve ser tratado como um GIF >

cliente.SendReadReceipt(eu ia, MessageId) 

cliente.UpdatePresence(eu ia, presença) 

Isso permite que a pessoa com identificação saiba seu status. Onde a presença pode ser um dos seguintes:

estático Presença =  disponível: "disponível", // "on-line" indisponível: "indisponível", // desligada composição: "composição", // "digitando. " gravação: "gravação", // "gravação. " parou: "parado" // eu não tenho idéia >

const Authjson = cliente.base64Encodedauthinfo() 

const Authjson = JSON.analisar( fs.readfilesync("Auth_info.json ") ) cliente.Conecte-se(Authjson)

cliente.ISONWHATSAPP ("[CountryCode] [AlgunsdigitNumber] @s.Whatsapp.líquido") .então ((existe, eu ia) =>  se (existe)  console.registro(eu ia + "Está no WhatsApp") > outro  console.registro(eu ia + "Não está no WhatsApp :(") > >)

Confira e execute o exemplo.JS para ver o exemplo de uso de todas essas funções. Para executar o script de exemplo, baixar ou clonar o repositório e depois digite o seguinte no terminal:

  1. CD Caminho/para/Baileys/Exemplo
  2. Exemplo do nó.JS

Eu não sou de forma alguma afiliado ao WhatsApp. Isso foi escrito para fins educacionais. Use a seu próprio critério.

Entendendo a arquitetura e design do sistema do WhatsApp

Você já se perguntou como o WhatsApp funciona? Nós’Estudou o design e a arquitetura do sistema de alto nível do WhatsApp’s tecnologia. Mergulhe para ver o que aprendemos.

Tag do tipo de conteúdo

Índice

Qual aplicativo tem mais de 2.5 bilhões de usuários ativos, mais de 5 bilhões de downloads e é o aplicativo mais popular em mais de 100 países?

Dica: verifique o título do artigo.

Isso’está certo. Whatsapp é o serviço de mensagens mais popular do mundo. De acordo com Mark Zuckerberg, mais de 100 bilhões de mensagens são enviadas sobre o WhatsApp todos os dias.

Com um tráfego quase astômico, pode-se’T ajuda, mas me pergunto como o WhatsApp funciona – seu design de sistema, arquitetura de servidor, tecnologia . Como isso lida com tantos usuários e mensagens simultâneos? Que tipo de estruturas e linguagens de programação permitem esse tipo de escala? Como eles mantêm todos esses dados seguros? Tantas perguntas!

Neste artigo, vamos mergulhar profundamente no WhatsApp’s Arquitetura e design do sistema. Nós’responderá todas as perguntas acima mencionadas e mais.
Se você’Eu já me perguntei sobre o top cachorro no mundo dos aplicativos de bate -papo, continue lendo.

Isenção de responsabilidade: Vasculhamos a Internet para coletar todos os recursos no design da arquitetura do WhatsApp e o compilamos e resumimos aqui. Até onde sabemos, esta informação é precisa. No entanto, à medida que as empresas atualizam sua pilha de tecnologia com frequência, essas informações estão sujeitas a alterações.

Whatsapp Front-End Tech Stack

Deixar’s começa com o front -end e trabalhe em nosso caminho para o hardware no back -end.

A primeira parte do design do sistema WhatsApp com o qual um usuário interage é o aplicativo móvel ou web. Whatsapp suporta quase todas as plataformas. Possui um aplicativo iOS, aplicativo Android, aplicativo de desktop, aplicativo da web e aplicativo Windows Phone. Até 2017, você pode até usar o WhatsApp em um BlackBerry.

Com tantas plataformas suportadas, você pode ter adivinhado que o WhatsApp seria um aplicativo híbrido. Mas, de fato, isso’meleca. Eles realmente construíram um aplicativo nativo para cada plataforma. Aqui está uma lista de todas as plataformas suportadas com os idiomas do front-end (s) que foram usados ​​para construir cada um:

Como as lojas do WhatsApp bate -papo localmente

Além da linguagem de programação, outra tecnologia importante que o WhatsApp usa no front -end é um banco de dados SQLite. O SQLITE é um banco de dados relacional independente, independente, que deve ser incorporado às aplicações-o que significa que ele vive no seu dispositivo. Whatsapp usa para armazenar conversas. Como seria um desperdício de recursos para baixar todas as mensagens da nuvem toda vez que você abrir o aplicativo, o WhatsApp escolhe armazenar as mensagens localmente. De fato, o WhatsApp apenas armazena mensagens até que sejam recebidas, momento em que são removidas.

Quais protocolos de mensagens usam o WhatsApp?

O WhatsApp usa uma versão altamente modificada do XMPP em um servidor Ejabberd (mais sobre isso mais tarde) para se comunicar com os clientes.

O XMPP no cliente abre um soquete SSL para os servidores do WhatsApp. Todas as mensagens enviadas estão na fila nos servidores até que o cliente seja aberto ou se reconecte a este soquete para recuperar as mensagens. Depois que uma mensagem é recuperada com sucesso pelo cliente, um status de sucesso é enviado de volta ao servidor do WhatsApp. O servidor encaminha esse status para o remetente original; avisando -lhes saibando que a mensagem foi recebida adicionando o “Marca de seleção” Ícone ao lado da mensagem enviada com sucesso.

Lembre -se de que, embora o XMPP seja um dos protocolos de mensagens mais populares para aplicativos de bate -papo, definitivamente não é a única opção para escolher um protocolo de mensagens.

Tecnologia de criptografia do WhatsApp

Whatsapp usa criptografia de ponta a ponta. Idealmente, isso significa que apenas o remetente original e o verdadeiro destinatário da mensagem podem ler a mensagem em texto simples.

Quando você envia uma mensagem, ele é criptografado usando um protocolo de criptografia específico (mais sobre isso a seguir). Whatsapp então armazena esta mensagem criptografada em seus servidores até’é entregue ao destinatário. Após a entrega, o dispositivo do destinatário descriptografa a mensagem de volta para uma mensagem de texto simples e legível usando uma chave criptográfica exclusiva. Em todo esse processo, o WhatsApp nunca conhece o conteúdo da sua mensagem.

Whatsapp’S A tecnologia de criptografia é chamada de protocolo de criptografia de sinal, que foi desenvolvido por sussurros de sistema aberto para ser um protocolo de criptografia moderno e de código aberto e forte para sistemas de mensagens assíncronos.

Embora a criptografia de ponta a ponta possa fazer você se sentir seguro em teoria. Na prática, a criptografia de ponta a ponta é’T tão protegendo a privacidade quanto se poderia esperar.

Whatsapp Back-end Stack

Deixar’s mover para o back -end.

Até onde sabemos, o design atual do sistema de back-end do WhatsApp se parece com o seguinte:

  • Erlang é a principal linguagem de programação
  • FreeBSD é o sistema operacional
  • Ejabberd é o servidor de aplicativos XMPP
  • FEIXE é a máquina virtual baseada em Erlang
  • Mnesia é o seu banco de dados baseado em Erlang
  • Yaws é o servidor da Web multimídia

Deixar’s explorar alguns dos aspectos mais interessantes do whatsapp’S Arquitetura de back-end:

Erlang

A escolha da linguagem de programação do WhatsApp é em grande parte o que lhe permite funcionar em uma escala tão colossal.

Erlang é uma linguagem de programação funcional orientada para a construção de sistemas simultâneos, escaláveis ​​e confiáveis. Ele usa um modelo baseado em processo chamado “modelo de ator” em que pequenos processos isolados se comunicam através de mensagens. Esses processos podem criar novos processos, enviar mensagens e modificar seu estado em resposta ao recebimento de mensagens.

Sua propriedade baseada em processos oferece à Erlang sua simultaneidade, escalabilidade e confiabilidade extremamente alta.

Esses processos também podem se comunicar com processos fora do núcleo em que ele executa. Isso facilita a escala do sistema horizontalmente (adicionando mais máquinas) ou verticalmente (adicionando mais núcleos). Por fim, como os processos podem se comunicar e, mais importante, reiniciar um ao outro’é fácil de construir sistemas de autocura. Se um bug travar um processo, outro processo pode reiniciá -lo.

FreeBSD

Uma escolha técnica interessante dos fundadores do WhatsApp foi escolher o FreeBSD como um sistema operacional em vez de um sistema mais usado (como o Linux).

Brian Acton, um dos co -fundadores do WhatsApp, disse isso em uma entrevista à Wired sobre a decisão:

“Linux é uma besta de complexidade. O FreeBSD tem a vantagem de ser uma única distribuição com uma coleção de portas extraordinariamente boa.”

Além disso, quando se trata de desempenho bruto, especialmente em relação à carga do sistema por pacote, nenhum outro sistema operacional pode vencer o FreeBSD.

No entanto, quando se trata disso, a verdadeira razão pela qual eles decidiram usar o FreeBSD é provavelmente porque os dois co-fundadores tinham uma longa história de trabalho com ele no Yahoo!.

Ejabberd

Ejabberd é um servidor XMPP de código aberto que está escrito em Erlang. O Whatsapp usa uma versão modificada do XMPP como seu protocolo para lidar com a entrega de mensagens. Até o servidor Ejabberd que o WhatsApp usa é fortemente personalizado para otimizar o desempenho do servidor.

O que’é o objetivo de Ejabberd?

Bem, ele lida com o roteamento da mensagem, a entrega e os aspectos gerais de mensagens instantâneas do aplicativo. Os recursos do ejabberd incluem:

  • Mensagens individuais
  • Conversa em grupo
  • Armazenar e encaminhar mensagens offline
  • Lista de contatos e presença

Mnesia

Para armazenar dados e mensagens temporárias, o WhatsApp usa um DBMS distribuído e baseado em Erlang (sistema de gerenciamento de banco de dados) chamado mnesia. Este DBMS oferece benefícios que muitos bancos de dados tradicionais não’T como:

  • Pesquisa de chave/valor em tempo real
  • Alta tolerância a falhas
  • Reconfiguração dinâmica
  • Objetos complexos

Mnesia também é o único DBMS que’S escrito em Erlang. Isso por si só é um benefício, porque não há diferenças de estrutura de dados entre Erlang no aplicativo e Erlang no DBMS. A codificação é, portanto, mais rápida e mais explícita.

FEIXE

Feixe, abreviação de “Bogdan’S Máquina abstrata Erlang”, é uma máquina virtual que compila e executa o código -fonte Erlang. O feixe foi projetado especificamente para aplicações altamente simultâneas – perfeitas para o WhatsApp’s Caso de uso. FEIXE’S molho secreto são processos leves que não’t Compartilhe a memória e são gerenciados por agendadores. Esses agendadores podem gerenciar milhões de processos em vários núcleos. Isso torna o feixe altamente escalável e resistente a falhas, como as causadas por cargas de alto tráfego, atualizações do sistema e interrupções na rede.

O feixe é tão crucial para o design do sistema WhatsApp que a equipe do WhatsApp publicou muitos patches e correções no código -fonte principal.

Yaws

As guinadas (mais um servidor da web) são um servidor web baseado em Erlang, ideal para conteúdo dinâmico. Whatsapp usa guinadas para armazenar dados multimídia. As guinadas em si usam Websockets HTML5 que simplificam a comunicação bidirecional, estabelecendo uma conexão confiável e rápida entre o servidor e o aplicativo. Com o uso dessa tecnologia, o WhatsApp é capaz de enviar e receber dados multimídia em bilhões de dispositivos – em tempo quase real.

Componentes de hardware do WhatsApp

Em 2017, quatro anos após ser adquirido pelo Facebook, o WhatsApp foi retirado do IBM Softlayer’s nuvem e trazido para o Facebook’s Centers de Dados proprietários.

O que sabemos é que em 2014 o WhatsApp exigiu em torno de 550 servidores e mais de 11.000 núcleos que administravam Erlang. Também sabemos que o WhatsApp’S Base de usuário era “apenas” cerca de meio bilhão em 2014 em comparação com os mais de 2 bilhões de usuários que atingiu em 2020. Então, com esses dados em mente, deixaremos você imaginar quantos servidores e núcleos o Whatsapp agora exige. Nós imaginamos que é muito.

Diagrama de arquitetura do WhatsApp

Diagrama de arquitetura do WhatsApp

A maneira mais fácil de entender o WhatsApp completo’S O design da arquitetura é, é claro, através de um diagrama de arquitetura do WhatsApp.

A partir do lado esquerdo, temos vários clientes diferentes (aplicativos móveis e da web), cada um dos quais hospeda um banco de dados SQLite local para armazenar conversas.

Os clientes usam Websockets HTTP para enviar e recuperar dados multimídia, como imagens e vídeos do servidor da web de guinadas. Mas, como você pode ver, o XMPP é usado para realmente enviar esses arquivos e outras mensagens para outros usuários.

Quando uma mensagem XMPP é enviada, ela passa pela série de etapas retratadas acima. Primeiro, ele é enviado para o WhatsApp’s servidor Ejabberd personalizado que é executado no feixe e freeBSD. O servidor Ejabberd salva a mensagem em uma tabela de banco de dados Mnesia, onde é colocado em uma fila. Quando o usuário receptor abre o aplicativo, reconectando -se ao soquete, a mensagem na fila é roteada através do servidor Ejabberd e entregue ao destinatário. Depois que a entrega bem -sucedida pode ser confirmada, a mensagem é excluída do banco de dados Mnesia.

Conclusão

Enquanto nós’sabem as especificações exatas do WhatsApp’S Arquitetura técnica e design do sistema, podemos ter uma boa ideia com base nas tecnologias que o WhatsApp emprega. Esperamos que este artigo, explorando o design da arquitetura do WhatsApp, tenha respondido às suas perguntas ardentes. Agora que você entendeu como o servidor do WhatsApp funciona, aprendeu como é a pilha de tecnologia do WhatsApp e até digitalizou um diagrama de arquitetura do WhatsApp. Talvez você esteja se sentindo fortalecido para assumir um projeto de aplicativo de bate -papo próprio.

Se você’Estou pronto para dar uma corrida para o seu dinheiro, inscreva -se no nosso painel de desenvolvedor e comece a criar seu aplicativo de bate -papo gratuitamente.

Mas lembre -se de que muitas das tecnologias na pilha de tecnologia do WhatsApp foram escolhidas especificamente por sua capacidade de escalar e lidar com simultaneidade extremamente alta.

Se você’está tentando construir um aplicativo de namoro ou telemedicina (ou qualquer coisa que não’Não preciso quase do mundo para ficar online ao mesmo tempo), você pode não precisar da quantidade de escala que o WhatsApp faz.

Em outras palavras, a pilha de tecnologia do WhatsApp, embora perfeita para o Whatsapp, pode não ser a melhor solução para você. Para aprender sobre a arquitetura e a tecnologia ideal para um aplicativo de bate -papo, vá para este artigo.

Se você ainda tiver dúvidas sobre o que é certo para você, fique à vontade para conversar com nossos especialistas e antes de começar a criar seu próprio aplicativo de bate -papo.

Apenas com fome por mais? Aqui estão mais alguns ótimos recursos para se aprofundar:

  • O mito da criptografia de ponta a ponta em aplicativos de mensagens
  • Entendendo a arquitetura e o design do sistema de um aplicativo de bate -papo
  • 11 Erro bobo Os desenvolvedores cometem ao criar um aplicativo de bate -papo

Sobre o autor

Cosette Cressler é um profissional de marketing de conteúdo apaixonado, especializado em SaaS, tecnologia, carreiras, produtividade, empreendedorismo e autodesenvolvimento. Ela ajuda a aumentar os negócios de todos os tamanhos, criando conteúdo consistente e digestível que captura a atenção e impulsiona a ação.

Whatsapp usa soquete

О эээ сйранibus

Ы з ззарегиgléria. С помощью этой страницы мы сможем определить, что запросы отправляете именно вы, а не робот. Почpels эээ моогitu произойth?

Эта страница отображается в тех случаях, когда автоматическими системами Google регистрируются исходящие из вашей сети запросы, которые нарушают Условия использования. Ponto. Ээth момо номттаая и оозз илэз и ээ и эз и эз и з и ззз и зз и ээз и ээз иth ээ эth ээзз эth эзз иthлз ио и зз и иth эз иээ эээо иth эз эээ ээо ээоо иth иэзз эth эзт эth эз ио эээ иth эз иэз иthлзз иоз ил иээ иээо иэээ иээо иth ио иээ эth иэ иээ эth иэ иээ эth ио иэ ээог seguir.

Ит и и и и и и и и и чззжfia м ирржжжfia м иржжжжfia м мжжжжжж<ь м м иржжжfia. não. Если вы используете общий доступ в Интернет, проблема может быть с компьютером с таким же IP-адресом, как у вас. Орратитеitivamente к с о и и с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с а с с а с а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а &rdquo;. ПодробнÉ.

Проверка по слову может также появляться, если вы вводите сложные запросы, обычно распространяемые автоматизированными системами, или же вводите запросы очень часто.

XMPP vs WebSocket – o que usar para aplicativos?

XMPP vs Websocket - qual usar para aplicativos?

Enquanto construir um aplicativo de mensagens instantâneas (IM) responsivo e rico em recursos é o seu objetivo, a parte mais preocupante é: descobrir o protocolo ideal para mensagens. As opções oferecidas (ambas) são explicadas em alguns minutos.

Para dizer claramente, tentamos trazer conhecimento substancial sobre o protocolo XMPP vs WebSocket através deste post para você. Conhecidos por suas características e instalações distintas, esses dois protocolos IM podem pavimentar o caminho para melhorar a comunicação instantânea à medida que avançamos no tempo. no entanto&rsquo;não é fácil de escolher, pois um fácil tem vantagens e limitações distintas.

objetivos de aprendizado

Inscreva -se para obter as últimas notícias

Mukhaddin Beshkov

Especialista verificado

Mais de 20 anos, experiência em engenharia de sistemas, análise de segurança, arquitetura de soluções. Proficiente no sistema operacional (Windows, Linux, UNIX), Programação (C ++, Python, HTML/CSS/JS, Bash), DB (MySQL, Oracle, MongoDB, PostgreSQL). Habilizado em Scripts (PowerShell, Python), DevOps (Microservices, Contêineres, CI/CD), Desenvolvimento da Web (Nó.js, react, angular). Histórico de sucesso no gerenciamento de sistemas de TI.

Definição

XMPP – Tudo sobre o protocolo

Usado para troca de fragmentos XML B/W A dupla de servidor-cliente, XMPP é um dos protocolos de padrão aberto precoce relativos à comunicação. Tem uma longa história de mais de 20 anos. Sua implementação efetiva exige o uso obrigatório da ligação de transporte adequada.

No modelo OSI, o XMPP funciona principalmente na camada de aplicação que elabora o padrão estrutural XML (de suas partes ou sintaxe). Para transmissão/retransmissão, precisa de camadas de transporte&rsquo; protocolos&rsquo; (Http ou tcp) ajuda.

eXtensível MEssaging & Prescisão PO Rotocol, principalmente, é usado em desenvolvimentos que envolvem aplicativos de bate-papo, aplicativos com instalações como chamadas de voz/vídeo, envio instantâneo de texto/mídia rica e chamada de vídeo em várias partes.

Comunicação direta do cliente-cliente

Prós

Com o XMPP, você tem vários benefícios para desfrutar enquanto está desenvolvendo um aplicativo de im. Por exemplo:

  • Seus recursos de segurança cibernética são avançados o suficiente para manter os principais perigos do mundo digital afastados.
  • A arquitetura descentralizada garante que seja acessível a todos.
  • O suporte técnico oferecido é confiável e eficaz.
  • É flexível e permite que os usuários finais façam alterações no processo de transmissão de dados conforme a necessidade do projeto.
  • Ajuda a estabelecer uma conexão persistente (contínua).
  • Ele simplifica os servidores de comunicação B/W, permitindo que diversas arquiteturas transmitam dados.
  • Reage imediatamente à presença do usuário final. Daí você&rsquo;Será capaz de descobrir se o usuário final está online ou offline.

Contras

Mesmo que o XMPP ofereça vários benefícios, não é impecável. Existem certas desvantagens óbvias ou contras deste protocolo.

  • Falta um mecanismo de QoS
  • O streaming ou comunicação XML baseada em texto aumenta as despesas gerais operacionais
  • O transporte de conteúdo geralmente ocorre sem sincronização
  • Às vezes, presença e/ou mensagens instantâneas podem causar sobrecarga do servidor

WebSocket – tudo sobre o protocolo

Isto&rsquo;é um protocolo IM moderno, permitindo dados binários e de texto&rsquo;S Fluxo de Fro.

Isto&rsquo;s de natureza bidirecional, de duplex full e com estado. Isto&rsquo;S usado principalmente para um aplicativo móvel que precisa de uma conexão contínua. Não tem nada a ver com a definição da natureza e tipo de dados em trânsito. Precisa do apoio de outros protocolos para implementar totalmente a imóvel no aplicativo de bate -papo.

Prós

O WebSocket foi projetado para preencher a lacuna que a tecnologia baseada em HTTP criou na transmissão de dados. Com o tempo, observou -se que era mais do que isso. Dê uma olhada nos principais benefícios para desfrutar com os websockets.

  • Mantém a comunicação, a menos que o servidor ou o cliente pare
  • Quase não há correspondência para a WebSocket quando se trata de velocidade. Ele pode transmitir dados mais rápido que Ajax e HTTP
  • Pode tornar possível a transmissão de dados entre os servidores de origem
  • É compatível com vários tipos de plataformas, como celular, web e desktop
  • O uso do WebSockets é econômico, pois exerce apenas despesas de 2 bytes
  • Ele efetivamente corrige a longa questão de votação

Contras

Apesar dos benefícios, a WebSocket tem algumas desvantagens em potencial que valem a pena notar. Por exemplo:

  • Funciona apenas quando você tem um navegador compatível com HTML 5
  • Falta mecanismo de sucesso do Ajax
  • Nenhum intermediário ou borda é possível armazenar em cache
  • Quando o WebSocket estiver em ação, os desenvolvedores terão dificuldade em implementar até os status HTTP mais simples

Comparação de protocolos

Depois de ter uma compreensão mais profunda do significado básico desses dois protocolos, é&rsquo;s Hora de passar para uma comparação detalhada do XMPP V/S WebSocket. Nós escolhemos alguns aspectos mais preocupantes e depois comparamos as ofertas desses dois.

Uma breve avaliação de segurança desses dois protocolos é crucial, pois o uso de um protocolo não garantido colocará tudo em risco. O XMPP é um protocolo de tempo e passou por várias mudanças e melhorias durante todos esses anos de ativação. À medida que os requisitos de segurança mudam, o protocolo melhora sua frente de segurança. Ele vem com várias camadas de segurança e recursos.

Quando o XMPP é ativado, a identidade pessoal é obrigatória. As mensagens e os hosts devem ser autenticados antes de fazer parte da comunicação para evitar o risco de falsificação. Mesmo que fosse o suficiente para manter as ameaças de spam sob controle,

O XMPP até permite que os usuários finais adicionem camadas de segurança conforme a necessidade da hora.

Quando se trata de criptografia, o XMPP oferece dois tipos. A primeira criptografia surge quando uma conexão estabelece e sua autenticação começa. Esta criptografia completa com SASL. Depois que a conexão é construída com sucesso, a comunicação cliente-servidor é apoiada pela criptografia TLS.

Se webSocket&rsquo;A oferta de segurança é examinada com cuidado, você poderá aprender que precisa de um pouco de melhoria. Isto&rsquo;é um protocolo muito jovem e requer mais melhorias e atualizações para corresponder ao que o XMPP está oferecendo. Mas, não&rsquo;t significa que não tem segurança. Oferece criptografia forte o suficiente para manter qualquer intrusão maliciosa afastada.

A arquitetura operacional principal do XMPP é descentralizada, enquanto os websockets seguem uma arquitetura centralizada. O XMPP é baseado no modelo cliente-servidor e evita a interação direta entre os clientes. Os websockets pegam a ajuda das APIs e garantem que o cliente e o servidor estejam se comunicando continuamente.

  1. Compatibilidade com outros protocolos

XMPP é um protocolo primitivo e não possui compatibilidade com API. Por outro lado, o WebSocket é altamente otimizado da API, que é o núcleo de melhor compatibilidade com outros protocolos.

  1. Enviando e recebendo dados binários

Nos websockets, a comunicação envolve o uso de códigos e mensagens, libertando os usuários dos problemas de análise e buffer de problemas. Isso torna a transferência de dados rápida. O XMPP segue um caminho muito fino para a transferência de dados binários, o que torna tudo pesado.

WebSocket lida com a camada de transporte&rsquo;s extensibilidade, enquanto o XMPP está preocupado com a camada de aplicação&rsquo;s extensibilidade. Isto&rsquo;é possível adicionar mais de 40 protocolos sobre os websockets. Mas, xmpp não&rsquo;T tão flexível.

Embora ambos sejam úteis para transmitir dados em tempo real em velocidade em chamas, o WebSocket supera o XMPP nessa frente por causa de sua natureza centralizada e comunicação contínua. Autenticação de força XMPP e autorização do servidor e do cliente diminuem um pouco seu desempenho.

Comparação de protocolos

Exemplos de uso do XMPP e WebSocket

XMPP é usado em aplicativos WhatsApp, GTalk e Grindr e embutido nos recursos de bate -papo. Para ser específico, o protocolo é preferido principalmente quando a comunicação segura ou baseada em grupo é o principal recurso do aplicativo.

Trello, Slack e Discord são os três aplicativos mais famosos construídos usando WebSockets. Como sabemos, essas aplicações são para equipes e trabalhadores remotos. Para concluir, o protocolo é mais útil para espaços de trabalho virtuais confinados, pois usa conexão contínua.

Conclusão – qual protocolo usar?

WebSocket e XMPP – ambos foram projetados para mensagens instantâneas. No entanto, qual você deve escolher é uma pergunta que deve ser respondida depois de levar os requisitos do projeto em contexto. No que diz respeito ao nosso entendimento, recomendamos o uso do WebSockets quando muitos dados precisam ser transferidos, e a comunicação deve permanecer aberta.

O XMPP é a melhor opção a fazer quando o desenvolvimento requer toneladas de plugins e a segurança deve ser de primeira linha. Então, antes de fazer uma escolha entre esses dois, você precisa descobrir quais são exatamente seus objetivos de desenvolvimento. Trabalhe de antemão e depois escolha um protocolo de acordo. No entanto, uma coisa tem certeza de que ambos apresentarão no desempenho nominal, se usado corretamente.

Perguntas frequentes

Para que é usado o XMPP para?

XMPP (protocolo de mensagens e presença extensível) é usado para comunicação em tempo real, como mensagens instantâneas, bate-papo por voz e vídeo e informações de presença.

Para que websocket é bom para?

O WebSocket é bom para aplicativos da Web em tempo real, como jogos on-line, aplicativos de bate-papo e plataformas de negociação financeira.

O XMPP pode ser usado com WebSocket?

Sim, o XMPP pode ser usado com o WebSocket para aprimorar os aplicativos de comunicação em tempo real.

Quais são as vantagens do WebSocket sobre XMPP?

O WebSocket tem menor latência, melhor desempenho e pode ser mais fácil de implementar do que o XMPP.

O WebSocket pode ser usado para transferência de arquivos?

De acordo com a especificação oficial, o WebSocket não foi projetado para transferência de arquivos. No entanto, alguns desenvolvedores encontraram maneiras de usar o WebSocket para transferência de arquivos. Repositório do GitHub