Веб-работник в Кордове - это поддерживается - PullRequest
1 голос
/ 13 марта 2019

Кажется, я не могу заставить мое приложение cordova работать даже в простом веб-приложении, даже если тот же веб-работник работает в браузере Chrome на том же устройстве.

(устройство Android, Google Pixel 3, работает под управлением Android 9, последний уровень исправлений. Приложение было встроено в сборку PhoneGap с cli-8.0.0)

Настройка в основном потоке:

const worker = new Worker('/fake.worker.js');
worker.postMessage(1337);
worker.addEventListener('message', event => console.log("[myWorker] received event from myWorker:", event));

И файл /fake.worker.js - это просто, без переноса:

/* eslint-disable no-restricted-globals */
console.log("fake.worker booted");
self.addEventListener("message", startCounter);

function startCounter(event) {
    console.log(event.data, self)
    let initial = event.data;
    console.log("fake.worker counter started:", initial);

    setInterval(() => this.postMessage(initial++), 1000);
}

В итоге, консоль никогда не показывает ничего от рабочего, ни из основного потока, ни из рабочего потока console.log заявления.

При подключении к устройству и удаленной отладке я вижу, что ('Worker' in window) === true и вкладка Сеть на удаленной консоли, что файл fake.worker.js действительно загружен.(Обслуживание файла через ngrok с моего ноутбука для разработки - после подключения к удаленной консоли я изменил расположение веб-представления с помощью window.location.href = 'https://....ngrok...'.)

Примечание : я такжея попытался включить Web Worker с помощью встроенного большого двоичного объекта (worker-loader для веб-пакета автоматизировал это для меня, но концепция показана на https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers#Embedded_workers) - и даже когда он «встроен», рабочий никогда не загружался.

...