Tecnologia push

Da Wikipédia, a enciclopédia livre
Ir para a navegação Saltar para pesquisar

A tecnologia push ou servidor push é um estilo de comunicação baseada na Internet em que a solicitação de uma determinada transação é iniciada pelo editor ou servidor central . É contrastado com pull /get, onde o pedido de transmissão de informações é iniciado pelo receptor ou cliente .

Os serviços push geralmente são baseados em preferências de informações expressas antecipadamente. Isso é chamado de modelo de publicação/assinatura . Um cliente "assina" vários "canais" de informação fornecidos por um servidor; sempre que um novo conteúdo está disponível em um desses canais, o servidor envia essa informação para o cliente.

Às vezes, o push é emulado com uma técnica de pesquisa , principalmente em circunstâncias em que um push real não é possível, como sites com políticas de segurança que exigem rejeição de solicitações HTTP/S de entrada.

Uso geral

Conferências síncronas e mensagens instantâneas são exemplos típicos de serviços push. Mensagens de bate-papo e, às vezes , arquivos são enviados ao usuário assim que são recebidos pelo serviço de mensagens. Tanto os programas peer-to-peer descentralizados (como WASTE ) quanto os programas centralizados (como IRC ou XMPP ) permitem o envio de arquivos, o que significa que o remetente inicia a transferência de dados em vez do destinatário.

O email também pode ser um sistema push: SMTP é um protocolo push (consulte Push e-mail ). No entanto, a última etapa – do servidor de e-mail ao computador desktop – normalmente usa um protocolo pull como POP3 ou IMAP . Os clientes de e-mail modernos fazem com que essa etapa pareça instantânea ao pesquisar repetidamente o servidor de e-mail, verificando-o com frequência em busca de novos e-mails. O protocolo IMAP inclui o comando IDLE , que permite ao servidor informar ao cliente quando novas mensagens chegam. O BlackBerry original foi o primeiro exemplo popular de push-email em um contexto sem fio. [ citação necessária ]

Outro exemplo é a PointCast Network , que teve ampla cobertura na década de 1990. Ele forneceu notícias e dados do mercado de ações como um protetor de tela. Tanto a Netscape quanto a Microsoft integraram a tecnologia push através do Channel Definition Format (CDF) em seu software no auge da guerra dos navegadores , mas nunca foi muito popular. O CDF desapareceu e foi removido dos navegadores da época, substituído nos anos 2000 pelo RSS (um sistema pull).

Outros usos de aplicativos da Web habilitados para push incluem distribuição de atualizações de software ("push updates"), distribuição de dados de mercado (stock tickers), sistemas de bate-papo/mensagens on-line ( webchat ), leilões, apostas e jogos on-line, resultados esportivos, consoles de monitoramento e monitoramento da rede de sensores .

Exemplos

Webpush

A proposta do Webpush da Internet Engineering Task Force é um protocolo simples usando HTTP versão 2 para entregar eventos em tempo real, como chamadas ou mensagens recebidas, que podem ser entregues (ou “enviadas”) em tempo hábil. O protocolo consolida todos os eventos em tempo real em uma única sessão, o que garante um uso mais eficiente dos recursos de rede e rádio. Um único serviço consolida todos os eventos, distribuindo esses eventos aos aplicativos à medida que chegam. Isso requer apenas uma sessão, evitando custos indiretos duplicados. [1]

As notificações da Web fazem parte do padrão W3C e definem uma API para notificações do usuário final. Uma notificação permite alertar o usuário fora do contexto de uma página da web sobre uma ocorrência, como a entrega de e-mail. [2] Como parte dessa API Push padrão definida pelo W3C, agora está sendo implementada pelo Chrome, Firefox, Edge e Safari. [3]

Push do servidor HTTP

O push do servidor HTTP (também conhecido como streaming HTTP) é um mecanismo para enviar dados não solicitados (assíncronos) de um servidor da Web para um navegador da Web . O push do servidor HTTP pode ser obtido por meio de vários mecanismos.

Como parte do HTML5, a API WebSocket permite que um servidor web e um cliente se comuniquem por meio de uma conexão TCP full-duplex .

Geralmente, o servidor web não encerra uma conexão após os dados de resposta terem sido entregues a um cliente. O servidor web deixa a conexão aberta para que, se ocorrer um evento (por exemplo, uma alteração nos dados internos que precisa ser relatado a um ou vários clientes), ele possa ser enviado imediatamente; caso contrário, o evento teria que ser enfileirado até que a próxima solicitação do cliente fosse recebida. A maioria dos servidores da web oferece essa funcionalidade via CGI (por exemplo, scripts de cabeçalhos não analisados ​​no Apache HTTP Server ). O mecanismo subjacente a essa abordagem é a codificação de transferência em partes .

Outro mecanismo está relacionado a um tipo MIME especial chamado multipart/x-mixed-replace, que foi introduzido pela Netscape em 1995. Os navegadores da Web interpretam isso como um documento que muda sempre que o servidor envia uma nova versão para o cliente. [4] Ele ainda é suportado pelo Firefox , Opera e Safari hoje, mas é ignorado pelo Internet Explorer [5] e é suportado apenas parcialmente pelo Google Chrome . [6] Pode ser aplicado a documentos HTML e também para streaming de imagens em aplicativos de webcam .

A proposta do WHATWG Web Applications 1.0 [7] inclui um mecanismo para enviar conteúdo para o cliente. Em 1º de setembro de 2006, o navegador Opera implementou esse novo sistema experimental em um recurso chamado " Eventos enviados pelo servidor ". [8] [9] Agora faz parte do padrão HTML5 . [10]

Pushlet

Nesta técnica, o servidor aproveita as conexões HTTP persistentes , deixando a resposta perpetuamente "aberta" (ou seja, o servidor nunca encerra a resposta), efetivamente enganando o navegador para permanecer no modo "carregamento" após o carregamento inicial da página poder ser considerado completo. O servidor então envia periodicamente trechos de JavaScript para atualizar o conteúdo da página, alcançando assim a capacidade de push. Ao usar essa técnica, o cliente não precisa de applets Java ou outros plug-ins para manter uma conexão aberta com o servidor; o cliente é notificado automaticamente sobre novos eventos, enviados pelo servidor. [11] [12]Uma séria desvantagem desse método, no entanto, é a falta de controle que o servidor tem sobre o tempo limite do navegador; uma atualização de página é sempre necessária se ocorrer um tempo limite no final do navegador.

Sondagem longa

A sondagem longa em si não é um verdadeiro impulso; long polling é uma variação da técnica de polling tradicional , mas permite emular um mecanismo de push em circunstâncias em que um push real não é possível, como sites com políticas de segurança que exigem rejeição de solicitações HTTP/S recebidas.

Com o polling longo, o cliente solicita informações do servidor exatamente como no polling normal, mas com a expectativa de que o servidor não responda imediatamente. Se o servidor não tiver novas informações para o cliente quando o poll for recebido, em vez de enviar uma resposta vazia, o servidor mantém a solicitação aberta e espera que as informações de resposta fiquem disponíveis. Uma vez que tenha novas informações, o servidor imediatamente envia uma resposta HTTP/S ao cliente, completando a solicitação HTTP/S aberta. Ao receber a resposta do servidor, o cliente geralmente emite imediatamente outra solicitação do servidor. Dessa forma, a latência de resposta usual (o tempo entre o momento em que a informação se torna disponível na próxima solicitação do cliente) de outra forma associada aos clientes de pesquisa é eliminada. [13]

Por exemplo, BOSH é uma técnica HTTP popular e de longa duração usada como uma alternativa de sondagem longa para uma conexão TCP contínua quando tal conexão é difícil ou impossível de empregar diretamente (por exemplo, em um navegador da web); [14] também é uma tecnologia subjacente no XMPP , que a Apple usa para o suporte a push do iCloud.

Relés Flash XMLSocket

Essa técnica, usada por aplicativos de bate -papo , faz uso do objeto XMLSocket em um filme Adobe Flash de pixel único. Sob o controle do JavaScript , o cliente estabelece uma conexão TCP com um relé unidirecional no servidor. O servidor de retransmissão não lê nada deste soquete ; em vez disso, ele envia imediatamente ao cliente um identificador exclusivo . Em seguida, o cliente faz uma solicitação HTTPao servidor web, incluindo com ele este identificador. O aplicativo da web pode então enviar mensagens endereçadas ao cliente para uma interface local do servidor de retransmissão, que as retransmite pelo soquete Flash. A vantagem dessa abordagem é que ela valoriza a assimetria natural de leitura e gravação que é típica de muitos aplicativos da Web, incluindo bate-papo e, como consequência, oferece alta eficiência. Como ele não aceita dados em soquetes de saída, o servidor de retransmissão não precisa pesquisar as conexões TCP de saída , tornando possível manter abertas dezenas de milhares de conexões simultâneas. Nesse modelo, o limite de escala é a pilha TCP do sistema operacional do servidor subjacente.

Entrega de dados de grupo confiável (RGDD)

Em serviços como Cloud Computing, para aumentar a confiabilidade e disponibilidade dos dados, geralmente é enviado (replicado) para várias máquinas. Por exemplo, o Hadoop Distributed File System (HDFS) faz 2 cópias extras de qualquer objeto armazenado. O RGDD concentra-se em converter de forma eficiente um objeto de um local para vários, enquanto economiza largura de banda enviando um número mínimo de cópias (apenas uma no melhor caso) do objeto por qualquer link na rede. Por exemplo, Datacast [15] é um esquema para entrega a muitos nós dentro de datacenters que se baseia em topologias regulares e estruturadas e DCCast [16] é uma abordagem semelhante para entrega em datacenters.

Notificação push

Uma notificação push é uma mensagem que é "enviada" do servidor de backend ou aplicativo para a interface do usuário, por exemplo (mas não limitado a) aplicativos móveis [17] e aplicativos de desktop. As notificações push foram introduzidas pela Apple em 2009. [18] [ duvidoso ] Em 2010 , o Google lançou seu próprio serviço, Google Cloud to Device Messaging (desde então substituído pelo Google Cloud Messaging e depois pelo Firebase Cloud Messaging ). [19] Novembro de 2015, a Microsoft anunciou que o Serviço de Notificação do Windowsseria expandido para fazer uso da arquitetura da Plataforma Universal do Windows, permitindo que dados push fossem enviados para Windows 10 , Windows 10 Mobile , Xbox , bem como outras plataformas suportadas usando chamadas de API universais e solicitações POST. [20]

As notificações push são divididas principalmente em 2 abordagens, notificações locais e notificações remotas. [21] Para notificações locais, o aplicativo agenda a notificação com o sistema operacional do dispositivo local. Para notificações remotas, o aplicativo define um cronômetro no próprio aplicativo, desde que possa ser executado continuamente em segundo plano. Quando o horário programado do evento é atingido ou a condição programada do evento é atendida, a mensagem é exibida na interface do usuário do aplicativo.

As notificações remotas são tratadas por um servidor remoto. Nesse cenário, o aplicativo cliente precisa ser registrado no servidor com uma chave exclusiva (por exemplo, um UUID ). O servidor então dispara a mensagem contra a chave exclusiva para entregar a mensagem ao aplicativo cliente por meio de um protocolo cliente/servidor acordado, como HTTP ou XMPP , e o cliente exibe a mensagem recebida. Quando a notificação por push chega, ela pode transmitir notificações e mensagens curtas, definir crachás nos ícones de aplicativos, piscar ou acender continuamente o LED de notificação ou reproduzir sons de alerta para atrair a atenção do usuário. [22]As notificações push geralmente são usadas por aplicativos para trazer informações à atenção dos usuários. O conteúdo das mensagens pode ser classificado nas seguintes categorias de exemplo:

  • Mensagens de bate-papo, por exemplo: mensagens do Facebook Messenger enviadas por outros usuários. [23]
  • Ofertas especiais de fornecedores, por exemplo: Um fornecedor pode querer anunciar suas ofertas sociais para os clientes.
  • Lembrete de evento, por exemplo: Alguns aplicativos podem permitir que o cliente crie lembrete ou alerta para um horário específico.
  • Alterações de tópicos inscritos, por exemplo: Os usuários podem querer obter atualizações sobre o clima em sua localização ou monitorar uma página da web para rastrear alterações, por exemplo.

As notificações push em tempo real podem gerar problemas de privacidade, pois podem ser usadas para vincular identidades virtuais de pseudônimos de redes sociais às identidades reais dos proprietários de smartphones. [24] O uso de notificações push desnecessárias para fins promocionais foi criticado como um exemplo de roubo de atenção . [25]

Veja também

Referências

  1. ^ M. Thomson, E. Damaggio e B. Raymor (22 de outubro de 2016). "Entrega de eventos genéricos usando HTTP Push" . Rascunho da Internet . Força Tarefa de Engenharia de Internet . Recuperado em 28 de outubro de 2016 .
  2. ^ "Notificações da Web" .
  3. ^ "API Web Push" .
  4. ^ CGI Programming on the World Wide Web O'Reilly livro explicando como usar Netscape server-push
  5. ^ Documentos Server-Push (HTML & XHTML: The Definitive Guide) Arquivado 2008-04-17 no livro Wayback Machine O'Reilly explicando server-push
  6. ^ Remova o suporte para recursos principais multipart/x-mixed-replace
  7. ^ "Especificação de aplicativos da Web 1.0" .
  8. ^ "Transmissão de eventos para navegadores da Web" . 01-09-2006 . Recuperado em 23-03-2007 .
  9. ^ "Opera assume a liderança com suporte AJAX entre navegadores: streaming mais eficiente" . 01-09-2006. Arquivado a partir do original em 2007-03-18 . Recuperado em 23-03-2007 .
  10. ^ "Padrão HTML - eventos enviados pelo servidor" . html.spec.whatwg.org . 31 de março de 2022 . Recuperado em 1 de abril de 2022 .{{cite web}}: CS1 maint: url-status (link)
  11. ^ Introdução aos Pushlets
  12. ^ Van Den Broecke, Just (1 de março de 2000). "Pushlets: Enviar eventos de servlets para navegadores clientes DHTML" . JavaWorld . Recuperado 2020-07-13 .
  13. ^ Santo André, Pedro; Loreto, Salvatore; Salsano, Stefano; Wilkins, Greg (abril de 2011). "RFC6202 - Problemas conhecidos e práticas recomendadas para o uso de sondagem longa e streaming em HTTP bidirecional" . Recuperado 2016-05-14 . {{cite journal}}: Cite journal requires |journal= (help)
  14. ^ "XEP-0124: Fluxos bidirecionais sobre HTTP síncrono (BOSH)" . Recuperado em 26-06-2012 .
  15. ^ C. Guo; et ai. (1 de novembro de 2012). "Datacast: um serviço de entrega de dados de grupo confiável escalável e eficiente para data centers" . Pesquisa da Microsoft . ACM . Recuperado em 6 de junho de 2017 .
  16. ^ M. Noormohammadpour; et ai. (10 de julho de 2017). "DCCast: Transferências ponto a multiponto eficientes entre datacenters" . USENIX . Recuperado em 6 de junho de 2017 .
  17. ^ Wohllebe, Atilla. (2020). "Aceitação do Consumidor de Notificações Push de Aplicativos: Revisão Sistemática sobre a Influência da Frequência" . Jornal Internacional de Tecnologias Móveis Interativas . 14 (13): 36–47. doi : 10.3991/ijim.v14i13.14563 .
  18. ^ "Serviço de notificação por push do iPhone para desenvolvedores anunciado" . Engadget . Recuperado 2016-10-18 .
  19. ^ "Google Cloud Messaging for Android (GCM) revelado, para substituir o C2DM Framework" . InfoQ . Recuperado 2016-10-18 .
  20. ^ mijacobs. "Visão geral do Windows Push Notification Services (WNS)" . docs.microsoft . com . Recuperado 2017-10-20 .
  21. ^ "Notificações locais e remotas em profundidade" . developer.apple . com . Recuperado 2016-10-18 .
  22. ^ "Notificações push Android e iOS - Blog - JatApp" . jatapp . com . Recuperado 2017-10-20 .
  23. ^ "Como faço para ajustar minhas notificações push para celular do Facebook? | Central de Ajuda do Facebook | Facebook" . www.facebook.com . Recuperado 2016-10-18 .
  24. ^ Loreti, Pierpaolo; Bracciale, Lorenzo; Caponi, Alberto (2018). "Ataque por push: vinculando identidades virtuais e reais usando notificações por push móveis" . Internet do futuro . 10 (2): 13. doi : 10.3390/fi10020013 .
  25. McFedries, Paul (22 de maio de 2014). "Pare, Atenção Ladrão!" . Espectro IEEE . Instituto de Engenheiros Eletricistas e Eletrônicos . Recuperado em 9 de agosto de 2021 .

Links externos