Estoy aprendiendo sobre los trabajadores del servicio, ya que tengo un caso de uso para crear un oyente de búsqueda, que devolverá una respuesta binaria arbitraria.
No tengo idea de por dónde empezar. Los ejemplos que he visto en línea hablan de hacer una solicitud de servidor, almacenar en caché el trabajador del servicio y devolverlo. ¡Lo que realmente quiero hacer es simplemente devolver mi propia respuesta, no hacer una consulta al servidor y almacenarla en caché!
Lo que estoy buscando, para empezar, es decir algo que una vez que el trabajador del servicio esté activo, dado que el usuario ingresa en el navegador (o usa fetch api para obtener la siguiente URL)
http://miaplicación/holamundo
mostrará 'Helloworld' en el navegador. El trabajador de servicio será algo como lo siguiente. Pero no tengo ni idea de cómo hacer que funcione.
self.addEventListener('fetch', event => { // compare end of url with /helloworld // if match, respond with 'helloword', otherwise fetch the response from the server });
Esta será una descripción general muy breve y amplia de cómo abordaría el problema.
Primero, seguiría una guía como esta:
https://css-tricks.com/agregar-un-trabajador-de-servicio-a-su-sitio/
// Listen for request events self.addEventListener('fetch', function (event) { // Get the request let request = event.request; ... }
Luego, usará este fragmento de código como guía para lo que desea hacer:
event.respondWith( fetch(request).then(function (response) { return response; }).catch(function (error) { return caches.match(request).then(function (response) { return response; }); }) );
Con algunas modificaciones.
Primero, querrá verificar si es un tipo de solicitud normal que no es / helloworld, y si lo es, haga algo como esto:
if (normalRequest) { event.respondWith( fetch(request).then(function (response) { return response; }); } else { ... TODO }
Y en la sección TODO, harás tu código de helloworld
; no tengo claro qué quieres hacer con eso, así que no puedo entrar en más detalles. Pero esta es la estructura general que usaría.