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