PostMessage от serviceWorker след push събитие

Трябва да изпратя съобщение от serviceWorker до страницата след push-събитие. Не мога да посоча свойството на порта (като https://jakearchibald.github.io/isserviceworkerready/demos/postMessage/), защото не съм изпратил това съобщение

Този код не работи (може би правя нещо нередно)

self.registration.active.postMessage('fsdfasf');

person Nikolay Marow    schedule 24.04.2015    source източник


Отговори (1)


Следвайки спецификациите това, което изглежда правилното внедряване е да изберете Client от Service Worker и след това с помощта на метода postMessage, напр.

onmessage = function(event){
  clients.matchAll().then(function(clients){
    clients[0].postMesssage('yourmessage');
  });
}
person Sandro Paganotti    schedule 26.04.2015
comment
И за да чуете това съобщение на контролираната страница, трябва да използвате нещо като navigator.serviceWorker.addEventListener('ServiceWorkerMessageEvent', function(e) {...}); Това се промени, започвайки от Chrome 45; вижте chromestatus.com/feature/5163630974730240 - person Jeff Posnick; 15.07.2015
comment
@JeffPosnick всъщност това работи: navigator.serviceWorker.addEventListener('message', e => console.log(e)); - person Martin Ždila; 10.06.2016