As atualizações em tempo real fornecem um caminho de comunicação instantâneo dos servidores diretamente para as instalações da extensão. É possível enviar e receber dados à medida que os eventos acontecem. Seja para enviar mensagens instantâneas, acionar tarefas em segundo plano ou sincronizar dados do dispositivo, essa é uma operação essencial com vários serviços modernos. Há várias opções para comunicação em tempo real nas extensões do Chrome.
- Push da Web, ou API Push, é um padrão da Web que permite enviar e receber mensagens em extensões do Chrome de qualquer provedor de push (em inglês) ou até mesmo com seu próprio servidor da Web.
- O chrome.gcm é uma API legada específica de extensão que permite enviar e receber mensagens usando o Firebase Cloud Messaging.
- O WebSockets é um protocolo de baixo nível que permite abrir uma conexão bidirecional entre sua extensão do Chrome e seu servidor.
Cenários comuns
Veja alguns cenários comuns nas extensões do Chrome em que a comunicação em tempo real é fundamental:
Mantenha os usuários atualizados sobre as mudanças.
Se você estiver sincronizando arquivos, configurações ou outras informações entre vários usuários, o envio por push da Web é a maneira perfeita de enviar atualizações silenciosas à sua extensão para avisá-la a atualizar o estado do servidor.
Você permite que os usuários relatem bugs ou problemas? Você pode fazer a integração com um provedor de push para que ele seja informado assim que você tiver uma atualização para compartilhar, diretamente na sua extensão.
Envie notificações aos usuários.
Embora seja possível enviar notificações totalmente do lado do cliente, se você tiver uma lógica do lado do servidor para quem, o quê, onde ou quando enviar uma notificação, a opção push da Web é a mais preparada para o futuro.
Para enviar mensagens a apenas um subconjunto de usuários, Push é a melhor opção.
Embora o Firebase Cloud Messaging ofereça Tópicos (também conhecidos
como canais), ele está disponível apenas na API HTTP Cloud Messaging. Ela é
diferente da versão legada que o chrome.gcm
usa. Se você quiser enviar
mensagens amplas a todos os usuários, incluindo aqueles em 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
é compatível com o Chrome há mais de uma década.
Use o push da Web ou o chrome.gcm
para enviar notificações aos usuários quando
algo importante na conta deles acontecer, por exemplo, quando uma nova mensagem chega
ou um arquivo é compartilhado.
Mensagens instantâneas
Precisa de comunicação frequente e bidirecional? Então, um soquete da Web 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 com outros usuários). Ele permite trocar dados e mensagens em tempo real. Embora elas 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, examinaremos melhor 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 é usado na Web aberta.
Notificações push com chrome.gcm
A API do chrome.gcm fornece 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 aplicativos para dispositivos móveis. Essa é uma API de extensão específica do Chrome que foi adicionada muitos anos antes da disponibilização do Push nos navegadores. Ele foi criado usando as APIs HTTP legadas do Firebase, que foram descontinuadas. Embora essas APIs tenham sido descontinuadas em outros lugares, elas não foram descontinuadas nas extensões. Elas continuarão funcionando até o futuro próximo. No entanto, por ser o back-end de push legado, ele não tem recursos como Topics.
Embora o serviço de back-end do FCM seja um requisito obrigatório para que as notificações alcancem
os usuários no Chrome, não é necessário usar 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, em vez de padrões específicos para extensões como este. Se a melhor opção para seu caso de uso é o chrome.gcm, veja as instruções detalhadas sobre como configurar o chrome.gcm do zero.
Mensagens em tempo real com WebSockets
Os WebSockets são a base das mensagens em tempo real na Web há mais de uma década. Eles têm sido a opção ideal para eventos em tempo real na Web, fornecendo 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 secundários ou service workers em segundo plano. 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.
Não é bom para notificações push
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 dela.
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 entram no 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 enviou ou recebeu uma mensagem WebSocket nos últimos 30 segundos. Se você estiver usando WebSockets em sua extensão e precisar garantir que ela não seja fechada prematuramente, envie uma mensagem coração para manter a conexão. Isso envolve o envio de mensagens periódicas ao servidor, informando que ele e o Chrome ainda estão ativos. Um exemplo de como manter um webhook ativo indefinidamente está disponível na nossa documentação do WebSocket.