Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

329
Views
¿Qué le sucede a un Service Worker cuando se abre una nueva pestaña con el mismo alcance?

Estoy implementando un Service Worker con una aplicación React. Estoy usando Service Worker para agregar un encabezado de Autorización a cada solicitud de fetch que proviene de la ventana controlada (llamadas API, así como imágenes y otros activos). La aplicación React obtiene un token de un proveedor de identidad (Keycloak) y luego lo envía al proveedor de servicios. Aquí hay un flujo simplificado:

  1. La aplicación React se carga
  2. La aplicación React carga el Service Worker usando un archivo Javascript en el mismo host.
  3. La aplicación React registra al Service Worker usando
 navigator?.serviceWorker?.register('/myServiceWorker.js', { scope: '/' }).then(() => { navigator.serviceWorker.controller?.postMessage({ type: 'MY_TOKEN' }); }

Lo interesante es que esto funciona bien en la primera carga, pero cuando abro otra pestaña y ejecuto la misma aplicación, no funciona. No puedo acceder a navigator.serviceWorker.controller y usar el método postMessage , porque navigator.serviceWorker.controller no está undefined .

Creo que esto se debe a que solo hay una copia de Service Worker, pero 2 copias de la aplicación React en ejecución. Cuando se abre la segunda pestaña, se ejecuta el script React, carga el Service Worker, pero el navegador ve que la nueva pestaña está dentro del alcance del Service Worker, por lo que no vuelve a ejecutar la inicialización del Service Worker. Sin embargo, esto parece evitar que Service Worker reclame la nueva ventana o algo que impida que Service Worker registre la nueva ventana con un controlador. ¿O es solo una condición de carrera de algún tipo?

EDITAR: Además, y algo extraño, si actualizo la segunda pestaña, funcionará cada dos veces . Esto parece ser confiable.

about 4 years ago · Santiago Gelvez
1 answers
Answer question

0

Hola! Estoy teniendo el mismo problema al cargar mis service workers en una nueva pestaña. Has encontrado alguna solucion a este problema?

about 4 years ago · Guillermo Salazar Irausquín Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!