As atualizações em tempo real fornecem um caminho de comunicação instantânea dos seus servidores diretamente para as instalações de extensões. É possível enviar e receber dados conforme os eventos acontecem. Seja para enviar mensagens instantâneas, acionar tarefas em segundo plano ou sincronizar dados do dispositivo, essa é uma operação essencial em vários serviços modernos. Há várias opções de comunicação em tempo real nas extensões do Chrome.
- O Web Push, ou API Push, é um padrão da Web que permite enviar e receber mensagens em extensões do Chrome de qualquer provedor push ou até mesmo do seu próprio servidor da Web.
- O chrome.gcm é uma API específica de extensão legada que permite enviar e receber mensagens usando o Firebase Cloud Messaging.
- O WebSockets é um protocolo de nível inferior que permite abrir uma conexão bidirecional entre sua extensão do Google Chrome e seu servidor.
Cenários comuns
Estes são alguns cenários comuns nas extensões do Chrome em que a comunicação em tempo real é essencial:
Mantenha os usuários informados sobre as mudanças.
Se você estiver sincronizando arquivos, configurações ou outras informações entre vários usuários, o push na Web é a maneira perfeita de enviar atualizações silenciosas à extensão para que ela atualize o estado do servidor.
Você permite que os usuários relatem bugs ou problemas? Você pode se integrar com um provedor de push para avisá-los assim que tiver uma atualização para compartilhar, diretamente na sua extensão.
Envie notificações aos usuários.
Embora seja possível enviar notificações completamente no lado do cliente, se você tiver uma lógica do lado do servidor para enviar uma notificação de quem, o quê, onde ou quando enviar uma notificação, a opção de push na Web é a opção mais preparada para o futuro.
Para enviar mensagens a apenas um subconjunto de usuários, o Push é a melhor escolha.
Embora o Firebase Cloud Messaging ofereça Topics (também conhecidos como canais), ela está disponível apenas na API HTTP Cloud Messaging. Ela é
diferente da versão legada que chrome.gcm
usa. Se você quiser enviar
mensagens amplas para todos os usuários, incluindo aqueles com versões legadas do Chrome (anteriores ao
Chrome 121), chrome.gcm
é a opção ideal. Criado com base nas APIs legadas do Firebase Messaging, o chrome.gcm
oferece suporte ao Chrome há mais de uma década.
É possível usar o Web Push ou o chrome.gcm
para enviar notificações aos usuários quando
algo importante na conta deles acontecer, como quando uma nova mensagem chegar
ou quando um arquivo for compartilhado.
Mensagens instantâneas
Precisa de comunicação bidirecional frequente? Então, um Web socket pode ser a melhor opção para você. Ele abre uma conexão bidirecional entre sua extensão e seu servidor (ou até mesmo diretamente para outros usuários). Ele permite trocar dados e mensagens em tempo real. Embora sejam uma ótima opção na Web em geral, elas têm algumas limitações com extensões que você precisa ter em mente se planeja usá-las.
No restante deste guia, analisaremos mais de perto as opções disponíveis.
Notificações push com a API Push
Com a API Push, você pode usar qualquer provedor Push para enviar notificações e mensagens push. Um push da API Push será processado pelo service worker assim que for recebido. Se a extensão tiver sido suspensa, um push a reativará. O processo de uso em extensões é exatamente o mesmo que você usaria na Web aberta.
Notificações push com chrome.gcm
A API chrome.gcm oferece uma conexão direta com o Firebase Cloud Messaging (FCM), um serviço de envio de atualizações em tempo real para aplicativos da Web e para dispositivos móveis. Esta é uma API de extensão específica do Chrome que foi adicionada muitos anos antes da disponibilização do Push nos navegadores. Ela foi criada usando as APIs HTTP legadas do Firebase, atualmente descontinuadas, Embora essas APIs tenham sido descontinuadas em outros lugares, elas não são descontinuadas em extensões. Elas continuarão trabalhando no futuro próximo. No entanto, por ser o back-end de push legado, faltam recursos como o Topics.
Embora um serviço de back-end do FCM seja um requisito fundamental para que as notificações cheguem
aos usuários no Chrome, você não precisa usar o chrome.gcm
para enviar mensagens.
Todos os provedores de Push podem enviar e receber mensagens e eventos para uma conta do Firebase usando o Push da Web. Embora essa ainda seja uma API de extensão do Chrome totalmente compatível, é uma prática recomendada preferir padrões da Web, como a API Push, para extensões específicas como essa. Caso seu
caso de uso seja mais adequado com o chrome.gcm, há uma
instruções detalhadas sobre como configurar o chrome.gcm do zero.
Mensagens em tempo real com WebSockets
Os WebSockets são o pilar das mensagens em tempo real na Web há mais de uma década. Eles são a opção ideal para eventos em tempo real na Web, proporcionando uma conversa contínua e bidirecional. Os WebSockets funcionam em vários componentes de extensão, sejam scripts de conteúdo, pop-ups, painéis laterais e service workers em segundo plano. Embora sejam uma ótima opção na Web em geral, eles têm algumas limitações com extensões que você precisa ter em mente se planeja usá-las.
Não é bom para notificações push
Como os WebSockets são executados na plataforma da Web, em vez de usar uma API de plataforma de extensão
como chrome.gcm
, o Chrome não tem como ativar sua extensão quando uma conexão
Websocket é iniciada fora da sua extensão.
Somente conexões ativas
O Chrome suspende as extensões que não estão sendo usadas após 30 segundos. Várias heurísticas são enviadas ao Chrome para determinar se a extensão está "sendo usada", uma das quais é uma conexão WebSocket ativa. O Chrome não suspende uma extensão que tenha enviado ou recebido uma mensagem do WebSocket nos últimos 30 segundos. Se você estiver usando WebSockets na sua extensão e precisar garantir que ele não seja fechado prematuramente, envie uma mensagem de sinal de funcionamento para manter a conexão. Isso envolve o envio de mensagens periódicas ao servidor, permitindo que ele e o Chrome saibam que você ainda está ativo. Um exemplo de como manter um websocket ativo indefinidamente está disponível na nossa documentação do WebSocket.