Contexto do fetch no service workers #1070
Replies: 8 comments
-
Beta Was this translation helpful? Give feedback.
-
@wmartins Essa sua solução foi minha primeira implementação, porém, vi essa outra forma e achei mais elegante. Para o problema, ambas tiveram o mesmo efeito. |
Beta Was this translation helpful? Give feedback.
-
@sbvorpagel removi meus comentários anteriores só pra não ficar uma solução incorreta. Estou investigando mais e te dou uma ajuda quando eu conseguir parar para debugar. :) |
Beta Was this translation helpful? Give feedback.
-
lá no index.html esse trecho aqui tem um erro de digitação no parâmetro "reponse" que deveria ser response fetch('/api/users', {method: 'GET'}).then(reponse => {
console.log('Veio uma response');
return response.json().then(r => {
return r;
}); |
Beta Was this translation helpful? Give feedback.
-
@sbvorpagel, acho que descobri o problema. Primeiro, eu fiz o ajuste que o @leandroruel apontou, realmente tem um typo ali. Segundo, enquanto estava testando, eu percebi que, ao atualizar a página, o evento de fetch passava a ser chamado. Depois de algumas pesquisas, caí na seguinte solução: Fonte: https://stackoverflow.com/a/42371369 Adicionar no this.onactivate = () => {
this.clients.claim();
} Talvez tenha alguma coisa a ver com o ciclo de vida dos ServiceWorkers. Vê se isso resolve o teu problema. É algo "estranho", mas talvez faça um pouco de sentido, olhando a documentação:
|
Beta Was this translation helpful? Give feedback.
-
Opa, uma coisa, há alguma razão para usar o Eu tenho um post onde explico a base do service worker e mostro sobre o ciclo de vida. https://willianjusten.com.br/como-fazer-seu-site-funcionar-offline-com-pwa/#o-que-e-service-worker Minha dica é usar dessa forma:
|
Beta Was this translation helpful? Give feedback.
-
@willianjusten Vi em um posto do Sergio Lopez dessa forma e achei mais elegante, mas pelo que entendi, funciona da mesma forma. @wmartins Dessa com esse this.onactivate, deu certo, o motivo, não entendi direito. @leandroruel Realmente comi uma letra na hora de digitar 😄 |
Beta Was this translation helpful? Give feedback.
-
@sbvorpagel, também fiquei "encucado" com isso. Pelo que entendi, é necessário ter um evento de navegação para ServiceWorker possa ter controle sobre a página. TL;DR
Detalhehttps://developers.google.com/web/fundamentals/primers/service-workers/lifecycle?hl=en-us
https://googlechrome.github.io/samples/service-worker/immediate-control/
https://stackoverflow.com/a/44626554
Espero que isso tenha sanado a dúvida. Eu também não sabia que isso acontecia, bem interessante/estranho. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Pessoal, fiz alguns testes com service workers, e não entendi muito bem o contexto que o fetch atua. No chrome o código abaixo não funciona, já no firefox sim.
Gostaria de saber se estou fazendo algo errado ou é um bug na implementação do chrome.
A ideia é registrar o service worker na raiz, e disparar um fetch em uma url qualquer apartir da raiz, no exemplo, '/api/users'. Acredito que dessa forma, o onfetch deveria detectar essa tentantiva de GET e interceptar, porém, isso apenas ocorre no firefox.
Clicar no botão para fazer a request
Index.html
sw.js
Beta Was this translation helpful? Give feedback.
All reactions