Интерфейс для Client.postMessage()
описан в https://github.com/slightlyoff/ServiceWorker/issues/609. К сожалению, он не полностью реализован в Google Chrome с версии 45, хотя я ожидаю, что он перейдет к версии позже.
Когда доступны функциональные возможности, вы можете использовать self.clients.matchAll()
для получения списка открытых страниц, которые контролируются сотрудником службы, и вызвать метод postMessage()
на конкретном клиенте, который вас интересует. Вы должны иметь в виду, что вполне возможно, что не будет никаких вкладок, открытых с помощью страницы, контролируемой вашим работником службы, и в этом случае вам нужно сделать что-то вроде открытия новой клиентской страницы с вашим целевым URL.
Но, есть метод, который, вероятно, более подходит для вашего случая использования (хотя и не в настоящее время поддерживает в Chrome 45): WindowClient.navigate()
, который будет инструктировать вкладку открытой контролируемую вашего работника службы, чтобы перейти к другому URL на то же происхождение.