O Service Worker é um componente necessário para o funcionamento do Web Push da Inngage.
Para instalações utilizando Cloudflare Workers, recomendamos disponibilizar o Service Worker da Inngage no caminho:
https://www.seusite.com/inn/sw.js
O uso do diretório /inn/ ajuda a manter os recursos da Inngage isolados e reduz possíveis conflitos com outros Service Workers ou funcionalidades existentes no site.
> Recomendação Inngage > > Sempre que possível, utilize /inn/sw.js para novas implementações.
Como funciona
A arquitetura da implementação será:
Navegador
│
▼
https://www.seusite.com/inn/sw.js
│
▼
Cloudflare
│
▼
Cloudflare Worker
│
▼
Service Worker da Inngage
O Cloudflare Worker funciona como uma camada intermediária: quando o navegador solicitar /inn/sw.js, ele buscará o Service Worker mantido pela Inngage e entregará seu conteúdo através do próprio domínio do cliente.
1. Identifique o domínio utilizado pelo site
Se o site funciona em:
https://www.seusite.com
o Service Worker deverá ficar disponível em:
https://www.seusite.com/inn/sw.js
Se o site funciona sem www:
https://seusite.com
o endereço será:
https://seusite.com/inn/sw.js
Utilize sempre o mesmo domínio utilizado pelos visitantes e configurado na implantação Web da Inngage.
2. Crie o Cloudflare Worker
No painel da Cloudflare, acesse:
Workers & Pages → Create
Crie um novo Worker.
Recomendamos utilizar um nome que facilite sua identificação:
inngage-service-worker
Depois de criar o Worker, abra a opção de edição do código.
3. Configure o Worker
Utilize o código abaixo:
export default {
async fetch(request) {
const inngageServiceWorker =
'https://cdn.inngage.com.br/midia/js/sw/sw.js';
try {
const response = await fetch(inngageServiceWorker);
if (!response.ok) {
return new Response(
`Unable to load Inngage Service Worker: ${response.status}`,
{
status: 502,
headers: {
'Content-Type': 'text/plain; charset=utf-8'
}
}
);
}
return new Response(response.body, {
status: 200,
headers: {
'Content-Type': 'application/javascript; charset=utf-8',
'Cache-Control': 'no-cache, no-store, must-revalidate'
}
});
} catch (error) {
return new Response(
'Unable to load Inngage Service Worker',
{
status: 502,
headers: {
'Content-Type': 'text/plain; charset=utf-8'
}
}
);
}
}
};
Após adicionar o código, clique em Deploy.
4. Configure a Route
Depois de publicar o Worker, é necessário informar ao Cloudflare quais requisições devem ser processadas por ele.
No Worker criado, acesse:
Settings → Domains & Routes
Adicione uma nova Route.
Para um site utilizando www:
www.seusite.com/inn/sw.js*
Para um site sem www:
seusite.com/inn/sw.js*
Associe a Route ao Worker:
inngage-service-worker
Por que utilizar /inn/sw.js?
O caminho:
/inn/sw.js
é recomendado pela Inngage para manter a implementação isolada de outros recursos do site.
Isso é especialmente útil quando o projeto já utiliza:
- PWA;
- Firebase;
- outro provedor de Web Push;
- Service Worker próprio;
- recursos de cache/offline;
- outras bibliotecas que utilizem Service Workers.
Por exemplo, o site pode continuar utilizando:
/sw.js
para seu Service Worker principal, enquanto a Inngage utiliza:
/inn/sw.js
5. Teste o Service Worker
Antes de testar o Web Push, abra diretamente:
https://www.seusite.com/inn/sw.js
O navegador deverá exibir código JavaScript.
A URL deve responder com:
HTTP 200
Content-Type: application/javascript
Ela não deve retornar:
404 Not Found
nem HTML da aplicação.
6. Valide pelo DevTools
Abra:
Chrome DevTools → Application → Service Workers
Confirme que o Service Worker da Inngage está registrado utilizando:
https://www.seusite.com/inn/sw.js
e verifique se o status está como:
activated and is running
7. Validação pelo Network
No DevTools:
- acesse Network;
- recarregue o site;
- procure por
sw.js; - selecione a requisição
/inn/sw.js.
Valide:
| Item | Resultado esperado |
|---|---|
| URL | https://www.seusite.com/inn/sw.js |
| HTTP Status | 200 |
| Content-Type | application/javascript |
| Conteúdo | Service Worker da Inngage |
| HTTPS | Sim |
8. Validação pelo terminal
Também é possível testar utilizando curl:
curl -I https://www.seusite.com/inn/sw.js
O resultado esperado é semelhante a:
HTTP/2 200
content-type: application/javascript; charset=utf-8
Para validar o conteúdo:
curl https://www.seusite.com/inn/sw.js
O retorno deverá ser JavaScript.
Checklist de implantação
Antes de concluir a implementação, valide:
- [ ] O site utiliza HTTPS.
- [ ] O Cloudflare Worker foi criado e publicado.
- [ ] A Route aponta para
/inn/sw.js. - [ ]
https://seudominio.com/inn/sw.jsresponde com HTTP200. - [ ] O retorno possui
Content-Type: application/javascript. - [ ] O conteúdo retornado é JavaScript e não HTML.
- [ ] Não existe cache agressivo sobre
/inn/sw.js. - [ ] A SDK da Inngage está configurada para utilizar
/inn/sw.js. - [ ] O Service Worker aparece no DevTools.
- [ ] O Service Worker está
activated. - [ ] O navegador consegue solicitar permissão para notificações.
- [ ] O usuário consegue ser registrado para Web Push na Inngage.
- [ ] Um Web Push de teste foi recebido corretamente.
Troubleshooting rápido
Caso a implementação não funcione, siga esta ordem:
/inn/sw.js abre?
│
┌────┴────┐
│ │
NÃO SIM
│ │
▼ ▼
Route / HTTP 200?
Worker │
┌───┴───┐
│ │
NÃO SIM
│ │
▼ ▼
Worker Content-Type
correto?
│
┌───┴───┐
│ │
NÃO SIM
│ │
▼ ▼
Headers Service Worker
registrado?
│
┌───┴───┐
│ │
NÃO SIM
│ │
▼ ▼
Console Testar
Web Push
Resultado esperado
Ao finalizar a configuração, o endereço:
https://seudominio.com/inn/sw.js
deve entregar corretamente o Service Worker da Inngage através do Cloudflare Worker.
A SDK Web da Inngage deve então ser configurada para registrar:
/inn/sw.js
como seu Service Worker.

