¿Hay alguna manera de pasar grandes cantidades de datos (múltiples MB) entre un trabajador web y el hilo principal? Trabajo en un proyecto en el que necesito descargar archivos, modificarlos un poco y de alguna manera dejar que el usuario descargue el archivo modificado. Encontré las siguientes formas de pasar datos entre un trabajador web y la interfaz de usuario principalPase grandes cantidades de datos entre el trabajador web y el hilo principal
- Usando el método normal
postMessage
. - Uso de objetos mobiliarios (cromo solamente)
- Crear una referencia URL a una burbuja y sólo enviar la dirección URL (funciona en Chrome, en otros también?)
Creo que (1) está bien cuando enviar objetos más pequeños, pero requiere mucho tiempo y espacio cuando se trata de archivos de más de unos pocos MB, ya que se serializa y se envía como JSON. Chrome ofrece una forma de transferir datos utilizando objetos transferibles donde los datos no tienen que copiarse. Lamentablemente, esta es solo una función de Chrome hasta ahora, ya que de lo contrario hubiera sido útil para mi propósito.
Lo último que encontré fue, para el trabajador, crear una URL para un blob utilizando self.webkitURL
y luego solo pasar la referencia de URL a la interfaz de usuario. Esto funciona bien, puedo darle la URL al usuario y ellos pueden descargar el archivo. Desafortunadamente, no he encontrado una manera de hacer esto en Firefox, ¿es posible?
¿Hay algún otro método que podría usarse para transferir datos entre los trabajadores y el hilo principal?
Por desgracia eso es todavía una operación de copia, aunque ciertamente aumenta la velocidad. – Erik