2016-03-14 32 views
13

Piszę bibliotekę, którą udostępnię stronom trzecim w celu uruchomienia pracownika serwisu na swojej stronie. Musi przechwytywać wszystkie żądania sieciowe, ale chcę pozwolić im na zbudowanie własnego pracownika serwisowego, jeśli mu się podoba.Czy mogę pozwolić, aby wielu pracowników serwisowych przechwyciło to samo żądanie pobrania?

Czy pracownicy usługowi mogą przechwycić te same pobory i zapewnić im pewien priorytet/kolejność? Czy istnieje inny wzór, którego powinienem użyć?

Dzięki

Odpowiedz

20

Nie, nie możesz. Tylko jeden pracownik serwisowy na zakres może być zarejestrowany, więc jeśli zakres jest bardziej szczegółowy, w tym przypadku w zapytaniu bierze udział tylko najbardziej konkretny.

Mimo to można załączyć wiele programów obsługi fetch, a wszystkie one przetworzą żądanie, więc być może będziesz mógł napisać swoją funkcjonalność w oddzielnym skrypcie i pozwolić pracownikowi serwisu użytkownika na dołączenie Twojego pliku przez importScripts().

Pierwszy program wywołujący synchronizację event.respondWith() (w rzeczywistości nie można wywołać tej metody asynchronicznie) wygrywa, a pozostałe procedury próbujące wywołać będą wyświetlać.

Priorytetyzacja i koordynacja wymaga oprogramowania pośredniego. Możesz sprawdzić ServiceWorkerWare lub sw-toolbox.

+0

Każdy pomysł, czy zastąpienie 'sw-toolbox', WorkBox, obsługuje pojęcie oprogramowania pośredniego? –