Entonces, lo primero que estamos haciendo aquí es crear una variable llamada contador y la establecemos en cero. A continuación, asignamos un método on install en nuestro objeto self y eso nos dice cuándo se está instalando el service worker. En este caso, simplemente vamos a registrar un mensaje de que se ha realizado la instalación.
Después de eso, tenemos un on activate, y esto se llama cuando el service worker alcanza la etapa o estado de activación, ya que estos service workers actúan como una máquina de estados. Entonces, cuando esto sucede, simplemente vamos a registrar un mensaje de que el service worker está ahora activo, pero también vamos a hacer algo más interesante. Cuando un service worker se activa por primera vez, las páginas abiertas, las solicitudes que envían no se envían inmediatamente a través de este service worker. No es hasta que la página se actualiza que esas páginas quedan bajo el control del service worker. Entonces, lo que estamos haciendo aquí en la parte inferior, estamos llamando a event.waitUntil, que acepta una promesa, y la promesa es el resultado de la llamada self.clients.claim. Eso significa básicamente que las páginas que están abiertas actualmente, el service worker interceptará la solicitud. Muy bien. El archivo continúa y aquí está la segunda mitad. También tenemos este controlador on fetch. Este controlador on fetch se llama cada vez que el service worker recibe una solicitud de red de una de las páginas web. Entonces, dentro de este controlador, lo que estamos haciendo primero es registrar la URL que se recibió. A continuación, tenemos una declaración if, por lo que aquí verificamos si la URL que se recibió termina en data.json. Si no es así, entonces saltamos al final y volvemos esencialmente a una solicitud HTTP normal. Entonces, aquí tenemos este evento que responde con, y eso acepta una promesa que se resuelve en un valor que se le da al navegador como resultado de la solicitud. Y así, el valor que le estamos dando es la respuesta de fetch, que es una promesa, y luego el argumento que proporcionamos a fetch es la solicitud entrante, que es event.request. Entonces, básicamente, lo que esa línea está diciendo es simplemente realizar una solicitud normal y no hacer nada con ella. Sin embargo, si la URL terminó en data.JSON, ejecutamos el cuerpo de esa declaración if. Entonces, lo que hacemos allí es incrementar esa variable contador de antes, y luego simplemente llamamos a event.respondWith, puedes ignorar ese return void, pero simplemente llamamos a event.respondWith, donde pasamos una nueva respuesta que estamos creando desde cero. Y así, el cuerpo de esa respuesta es un objeto JSON que contiene nuestro contador en la variable. Y luego, solo con fines ilustrativos, establecemos las cabeceras, por lo que en este caso, establecemos el tipo de contenido en text.JSON. Y así, si ejecutamos este código, estos son los registros que veremos. Entonces, lo primero que vemos es que se ha instalado el service worker. A continuación, vemos que el service worker ha sido activado. Y luego, finalmente, vemos que ha ocurrido un cambio de controlador. Nuevamente, el orden de estos mensajes no es determinista, ya que el navegador, ya sabes, puede manejar un registro y almacenarlo en memoria. Bueno, imprimirá un registro desde otra ubicación.
Comments