Я использую Angular5
и angular service worker
.
Я cached
некоторые данные и некоторые активы, и все работает нормально, как ожидалось, и даже развернул код.
Теперь, если я обновлю некоторый код и снова разверну, service worker
не будет обновлен.
Итак, я прошел по ссылке Angular Service Worker , и я реализовал SwUpdate service
.
Вот мой код:
Я создал службу и назвал ее в компоненте приложения
import { Injectable, NgZone } from '@angular/core';
import { interval } from 'rxjs/observable/interval';
import { SwUpdate } from '@angular/service-worker';
import { Observable } from 'rxjs/Rx';
@Injectable()
export class ServiceWorkerService {
constructor(updates: SwUpdate, ngZone: NgZone) {
console.log('Servicee worker update called');
updates.available.subscribe(event => {
console.log('current version is', event.current);
console.log('available version is', event.available);
updates.activateUpdate().then(() => document.location.reload());
});
updates.activated.subscribe(event => {
console.log('old version was', event.previous);
console.log('new version is', event.current);
});
ngZone.runOutsideAngular(() => {
interval(6000).subscribe(() => {
console.log('Inside Interval')
ngZone.run(() => updates.checkForUpdate());
});
});
}
}
Что делает вышеуказанный код:
- Каждый раз, когда развертывается новый код, старый сервисный работник обнаруживает его.
- Тогда это
subscribes
до updates.available
событие.
- Мы слушаем это событие и перезагружаем страницу.
Проблема:
Теперь проблема в том, что он отлично работает на Chrome. но не в
светлячок . В Firefox код не приходит внутрь
updates.available.subscribe