2016-03-14 11 views
13

Sto scrivendo una libreria che fornirò a terze parti per eseguire un operatore di servizio sul loro sito. Ha bisogno di intercettare tutte le richieste di rete, ma voglio permettere loro di costruire il proprio operatore di servizio, se lo desiderano.Posso avere più operatori di servizio che intercettano la stessa richiesta di recupero?

Posso avere entrambi i lavoratori dell'assistenza intercettare gli stessi recuperi e fornire una sorta di priorità/ordine tra loro? In alternativa c'è qualche altro schema che dovrei usare?

Grazie

risposta

20

No, non è possibile. È consentito registrare un solo operatore di servizio per ambito, ovvero the latest kick the previous one out a meno che l'ambito sia più specifico, in questo caso la richiesta è frequentata solo dal più specifico.

Tuttavia, è possibile allegare più gestori fetch e tutti elaboreranno la richiesta, quindi forse è possibile scrivere le proprie funzionalità in uno script separato e consentire al lavoratore del servizio dell'utente di includere il file tramite importScripts().

Il primo gestore che chiama in sequenza event.respondWith() (in realtà, non è possibile chiamare questo metodo in modo asincrono) vince e i restanti gestori che tentano di chiamare generano.

L'assegnazione delle priorità e il coordinamento richiedono il middleware. È possibile controllare ServiceWorkerWare o sw-toolbox.

+0

Qualche idea se la sostituzione di 'sw-toolbox', WorkBox, supporti la nozione di middleware? –

Problemi correlati