Слушайте события Push работника службы от GatsbyJS - PullRequest
0 голосов
/ 31 января 2019

У меня установлено gatsby-offline-plugin, и я пытаюсь использовать сервисного работника для получения push-событий.Я не могу слушать события для них.

Я пытался слушать их так:

export const onServiceWorkerUpdateFound = ({ serviceWorker }) => {    
  serviceWorker.addEventListener('push', event => {
    console.log('[Service Worker] Push Received.', event);
    console.log(`[Service Worker] Push had this data: "${event.data.text()}"`);
  });
}

Также как это:

export const onServiceWorkerUpdateFound = ({ serviceWorker }) => {
  self.addEventListener('push', event => {
    console.log('[Service Worker] Push Received.', event);
    console.log(`[Service Worker] Push had this data: "${event.data.text()}"`);
  });
}

Ничегокажется, вышел из системы.Кроме того, Self кажется вторым объектом окна

Я могу успешно подписаться (я получаю конечную точку и ключи), но попытка публикации на этой конечной точке не имеет никакого эффекта.Я также пытался использовать команды «push» в инструментах Chrome Dev, но безуспешно.

Есть идеи, если это поддерживается?или как это надо сделать?

1 Ответ

0 голосов
/ 29 июля 2019

для всех, кто сталкивается с этой проблемой.Вы можете решить эту проблему, создав полностью настраиваемый сервисный работник или добавив скрипт расширения к существующему сервисному работнику.

Сценарий расширения

В корневой статической папке добавьте свое расширение дляпример: sw-extension.js и добавьте сюда прослушиватели событий.

// sw-extension.js
self.addEventListener('push', (event) => {
    console.log(event)
})

, а затем добавьте эти параметры в автономный плагин в файле конфигурации gatsby.

//gatsby-config.js
{
  resolve: `gatsby-plugin-offline`,
  options: {
      importScripts: [`./sw-extension.js`],
  },
},

пользовательская службаработник

добавьте следующий код в файл браузера gatsby и добавьте файл с именем sw.js в вашу статическую папку.

// gatsby-browser.js
export const registerServiceWorker = () => true
...