首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >监听来自GatsbyJS的服务工作者推送事件

监听来自GatsbyJS的服务工作者推送事件
EN

Stack Overflow用户
提问于 2019-01-31 14:34:50
回答 1查看 209关注 0票数 0

我已经安装了gatsby-offline-plugin,并且正在尝试使用service worker来接收推送事件。我似乎不能为他们听这些事件。

我试着这样听他们说:

代码语言:javascript
运行
复制
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()}"`);
  });
}

也是这样的:

代码语言:javascript
运行
复制
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似乎只是窗口对象

我可以成功订阅(我获得了端点和密钥),但尝试发布到该端点没有任何效果。我也尝试过使用chrome dev工具中的"push“命令,但是没有成功。

你知道这是否被支持吗?或者应该怎么做?

EN

回答 1

Stack Overflow用户

发布于 2019-07-29 21:42:36

对于每个遇到这个问题的人。您可以通过创建一个完全自定义的服务工作者来解决这个问题,也可以向现有的服务工作者添加一个扩展脚本。

扩展脚本

在您的根静态文件夹中,添加您的扩展名,例如:sw-tension.js,并在此处添加您的事件侦听器。

代码语言:javascript
运行
复制
// sw-extension.js
self.addEventListener('push', (event) => {
    console.log(event)
})

然后将这些选项添加到gatsby-config文件中的脱机插件中。

代码语言:javascript
运行
复制
//gatsby-config.js
{
  resolve: `gatsby-plugin-offline`,
  options: {
      importScripts: [`./sw-extension.js`],
  },
},

自定义服务工作者

将以下代码添加到gatsby-browser文件中,并将名为sw.js的文件添加到静态文件夹中。

代码语言:javascript
运行
复制
// gatsby-browser.js
export const registerServiceWorker = () => true
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54454662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档