Есть ли способ передавать большие объемы данных (несколько МБ) между веб-воркером и основным потоком? Я работаю в проекте, где мне нужно загрузить файлы, немного изменить их, а затем каким-то образом позволить пользователю загрузить измененный файл. Я нашел следующие способы передачи данных между веб-воркером и основным пользовательским интерфейсом.
- Обычным методом
postMessage
. - Использование переносимых объектов (только в Chrome)
- Создайте ссылку URL-адреса на большой двоичный объект и отправьте только URL-адрес (работает в Chrome, а также в других?)
Я думаю, что (1) подходит для отправки небольших объектов, но это занимает много времени и места при работе с файлами размером более нескольких МБ, поскольку он сериализуется и отправляется как JSON. Chrome предлагает способ передачи данных с помощью переносимых объектов, где данные не нужно копировать. К сожалению, пока это только функция Chrome, так как в противном случае она бы послужила моей цели.
Последнее, что я обнаружил, это то, что работник создает URL-адрес большого двоичного объекта с помощью self.webkitURL
, а затем передает только URL-ссылку в пользовательский интерфейс. Это работает хорошо, я могу дать URL-адрес пользователю, и он сможет загрузить файл. К сожалению, я не нашел способа сделать это в Firefox, возможно ли это?
Есть ли другие методы, которые можно использовать для передачи данных между рабочими и основным потоком?