问题标签 [service-worker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3191 浏览

push-notification - 使用 Service Worker 向所有人发送推送通知

目前我可以通过上面的命令发送推送通知。为了向用户发送通知,我需要从用户那里获取注册 ID。如果我想向所有人(订阅该通知的人)推送通知怎么办?我如何获得他们的注册 ID?

*注意:我想要的是:当我在网站上的内容更新时,向所有人推送通知。

链接到我的项目:Github

我从这里学到了推送通知 + sw:Google Developer

0 投票
1 回答
1101 浏览

node.js - ServiceWorker 和推送通知负载

社区:

ServiceWorker 在缓存管理方面是一项非常先进的技术,但我有一些与其他操作相关的问题,例如:

推送通知:我做了一个 GCM 集成(Google Clud Message)和 NodeJS,按照这篇文章,问题是当 GCM 将信息发送到客户端(Chorme)时,GCM 生成的消息的有效负载在 Notification 中无法访问在 ServiceWorker Listener 中,这对于做出决策非常有用。任何想法何时启用通知中的数据有效负载?

注册:由于 ES6 已经非常成熟,可以通过其他方式注册一个 ServiceWorker,例如:

这是可能的还是有意义的?

谢谢!!!!

0 投票
1 回答
245 浏览

polymer - 铂sw套准元件上的聚合物自动套准方法

我已经安装了入门聚合物应用程序(哟聚合物)。

而且我在 Platinum-sw-register 元素上将自动注册设置为 false。

因为我没有调用元素注册方法,所以我不希望服务工作者被注册。但是在 chrome 开发工具中,我可以看到即使在删除并刷新页面后似乎已激活并运行的服务人员。

我是否误解了此属性的用途?在我手动调用元素上的 register 方法之前,我希望在 chrome 开发工具中看不到服务人员。

0 投票
1 回答
1667 浏览

iframe - 来自 iframe 的 Service Worker,用于 Web 的 Chrome GCM 通知

我想订阅/取消订阅服务人员以通过 iframe 在网络上获取 Chrome GCM 通知。

我有一个工作原型,可以在直接在浏览器上打开它以及从 window.open javascript 弹出时正常工作。

但它在从 iframe 加载时给出了权限被拒绝错误。

这里可能有什么问题,是的,我的来源是 http,而 iframe URL 是 https。为什么 iframe 不能订阅通知。

0 投票
1 回答
1225 浏览

polymer - 如何将 Polymer 的 Platinum-sw-* 配置为不缓存一个 URL 路径?

如何配置 Polymer 的 Platinum-sw-cache 或 Platinum-sw-fetch 以缓存除 /_api 之外的所有 URL 路径,它是 Hoodie 的 API 的 URL?我已经配置了一个 Platinum-sw-fetch 元素来处理 /_api 路径,然后配置了 Platinum-sw-cache 来处理其余路径,如下所示:

custom-fetch-handler.js 包含以下内容。它的目的只是以服务工作者未处理请求时浏览器的方式返回请求的结果。

似乎无法正常工作的是,在用户 1 登录后,然后退出,然后用户 2 登录,然后在 Chrome 开发工具的网络选项卡中,我可以看到 Hoodie 定期继续向两个用户发出请求API 端点如下所示:

相反,它应该只向其中一个 API 端点发出请求。在“网络”选项卡中,这些 URL 中的每一个连续出现两次,并且在“大小”列中,第一个请求显示“(来自 ServiceWorker)”,第二个请求以字节表示响应大小,以防万一。

另一个似乎相关的问题是,当我以用户 2 身份登录并提交表单时,应用程序会写入服务器端用户 1 的数据库。这让我认为问题是由于应用程序无法绕过 /_api 路由的缓存。

我是否应该在一个 Platinum-sw-register 元素中同时使用 Platinum-sw-cache 和 Platinum-sw-fetch,因为文档声明它们是彼此的替代品?

0 投票
3 回答
3657 浏览

updates - 如果 update() 不可用,以编程方式更新服务工作者

ServiceWorkerRegistration.update()由于尚未在 Chrome 中实现,我如何以编程方式更新服务工作者?有替代方案吗?

0 投票
1 回答
224 浏览

polymer - 白金-sw“简单的离线电子书阅读器”应该离线工作并通过刷新吗?

换句话说,当页面通过服务工作者缓存在“缓存存储”中时,我是否应该能够“刷新”页面?

例如,去电子书演示看:https ://elements.polymer-project.org/elements/platinum-sw?view=demo:demo/index.html&active=platinum-sw-register

Service Worker 完成后,我们会在缓存存储中看到这一点。

在此处输入图像描述

然后我们进入飞行模式,我们通过浏览器刷新页面(我们希望页面从缓存存储中加载)但是我们看到“离线”并且缓存存储似乎是空的。

在此处输入图像描述

但是当我们使用https://jakearchibald.github.io/trained-to-thrill时,它似乎按预期工作。但我们更喜欢更简单的铂-sw聚合物方法:)

网上“训练有素”的图片: 在此处输入图像描述

《训练有素》离线按刷新图: 在此处输入图像描述

刷新浏览器页面时,“训练有素”似乎起作用了。即使按下页面内的“刷新”按钮。后者显示了额外的“连接脱轨”消息。浏览器刷新不显示“连接脱轨”消息,但页面仍然可用,不像上面的白金-sw 离线电子书示例。

我们的问题是,当应用程序通过 Platinum-sw 标签正确缓存时,用户是否应该能够按下浏览器刷新?

奇怪的是,当我有时按下后退按钮时,页面会开始工作。这可能是由浏览器缓存引起的。

chrome有没有办法在一个页面上查看“浏览器缓存”、“缓存存储”和“应用程序缓存”中的内容?:)

0 投票
1 回答
2252 浏览

service-worker - 处理服务工作者中的获取,但允许客户端查看重定向

我有一个 url,/users/sign_out应该注销用户并将他们重定向到我的根 url /,。我想通过我的服务工作者处理这个获取,因为我想在将用户发送回 root 之前从缓存中清除一些项目。但是,由于客户端看不到在从服务人员获取时发生的重定向,因此用户在我的初始屏幕上结束了,但看到了预重定向地址/users/sign_out

目前有什么方法可以处理获取并允许客户端查看正确的最终 url?

似乎最终会有一种Response.redirect()方法允许使用最终 url 更新响应。看起来也可能有某种finalURL选项也可以解决这种情况。但是我现在有什么可以使用的吗?在 Twitter 上,Jake Archibald (@jaffathecake) 说我可以自己构建一个新的响应 - 我可以,但即使在查看了规范和 MDN 文档之后,我仍然无法弄清楚如何为它。

如果实际上有一种方法可以构建一个可以满足我需要的 Response 对象,那么有人可以告诉我它是如何工作的吗?

0 投票
1 回答
3026 浏览

javascript - 如何使用单个 Javascript 标记同时安装服务工作者和清单?

我已经为网站构建了一个服务,可以轻松地将推送通知集成到他们的网站中,但当前的 Chrome 实现还要求他们设置清单和服务工作者。

有没有办法只用一行 Javascript 设置服务工作者和清单?

0 投票
1 回答
5032 浏览

google-cloud-messaging - chrome 推送通知中 Service Worker 中的 GCM 注册 ID

我能够发送推送通知,并且在服务人员中我正在进行服务调用,我只是想通过该服务调用发送 GCM 注册 ID。如何在服务工作者中获取注册 ID 或订阅 ID

这是我的代码