2016-03-14 3 views
13

Я пишу библиотеку, которую я предоставлю третьим сторонам для запуска сервисного работника на их сайте. Он должен перехватывать все сетевые запросы, но я хочу, чтобы они могли создать своего собственного сервисного работника, если захотят.Могу ли я, чтобы несколько сервисных работников перехватили один и тот же запрос на выборку?

Могу ли я, чтобы оба обслуживающего персонала перехватили одни и те же выборки и обеспечили какой-то приоритет/порядок между ними? В качестве альтернативы есть какой-то другой шаблон, который я должен использовать?

Thanks

ответ

20

Нет, вы не можете. Разрешается регистрировать только одного обслуживающего работника в области видимости, поэтому the latest kick the previous one out, если область действия не является более конкретной, в этом случае запрос сопровождается только самым конкретным.

Тем не менее, вы можете прикрепить несколько обработчиков fetch, и все они обработают запрос, поэтому, возможно, вы можете написать свою функциональность в отдельном скрипте и позволить сервисному работнику пользователя включать ваш файл через importScripts().

Первый обработчик, вызывающий event.respondWith() синхронно (на самом деле, вы не можете вызвать этот метод асинхронно), а остальные обработчики, пытающиеся вызвать, будут бросать.

Для установления приоритетов и координации требуется промежуточное ПО. Вы можете проверить ServiceWorkerWare или sw-toolbox.

+0

Подумайте, поддерживает ли замена 'sw-toolbox', WorkBox, понятие промежуточного программного обеспечения? –