Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

107
Vistas
Trabajador compartido en React

Estoy usando trabajadores web en mi aplicación React con una clase de ayuda que se ve así:

 export class WebWorker { constructor(worker) { const code = worker.toString(); const blob = new Blob(["(" + code + ")()"]); return new Worker(URL.createObjectURL(blob)); }}

El trabajador se parece a:

 export default () => { self.addEventListener('message', function (e) { switch (e.data.event) { case 'start': // Start back ground task break; case 'stop': // Stop background task break; } }, false);

Entonces puedo crear el trabajador usando

 let sessionWorker = new WebWorker(SessionWorker); sessionWorker.postMessage({event: "start"})

Esto funciona bien, sin embargo, ahora necesito usar un SharedWorker y tengo problemas para que funcione. Todos los recursos que he encontrado muestran trabajadores web regulares. Existe esta pregunta SO usando Shared Worker en React pero no funciona para mí. En realidad, se ve idéntico a mi código normal de WebWorker, pero esto no funciona porque SharedWorkers requiere que implemente una función onconnect y no entiendo cómo hacerlo. Los ejemplos que no reaccionan que he encontrado muestran el script del trabajador como:

 onconnect = function(e) { var port = e.ports[0]; port.onmessage = function(e) { var workerResult = 'Result: ' + (e.data[0] * e.data[1]); port.postMessage(workerResult); } }

pero si pongo eso en mi archivo js de trabajador y sigo el mismo patrón usando el ayudante de WebWorker, el trabajador.toString() simplemente devuelve [ventana de objeto] y nunca se ejecuta. No entiendo cómo crear una función 'onconnect' que se llamará. He probado variaciones como esta:

 import React from 'react'; self.onconnect = (e) => { var port = e.ports[0]; console.log("test log"); port.onmessage = function(e) { console.log("Message received ", e) port.postMessage("test"); } } export default self;

Al final nada me funciona. Claramente, no entiendo las exportaciones en absoluto en Javascript. Si solo exporto una función llamada onconnect, nunca se llama, claramente onconnect tiene que pertenecer a algún tipo de contexto de clase (como Window o Self), pero no entiendo qué se necesita.

Gracias, Troya.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda