问题标签 [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 回答
1059 浏览

service-worker - How is the Push API's push service URL set?

The Push API defines a push service as

a system that allows application servers to send push messages to a webapp.

A subscription to the service is created via a call to serviceWorkerRegistration .pushManager.subscribe() without any parameters.

How is the URL for this push service configured? I would have expected .subscribe() to take a URL parameter for the service.

The Push API's sister spec, Generic Event Delivery Using HTTP Push, says:

push service: This resource is used to create push message subscriptions (see Section 3). A URL for the push service is configured into user agents.

But it does not specify how this configuration would take place.

0 投票
1 回答
395 浏览

javascript - Service Worker 如何防止“获取”占用过多磁盘空间?

我可以知道可以用来防止addEventListener('fetch'&&cache.put(填满用户磁盘空间的策略是什么吗?无论如何为缓存中的每个请求设置过期时间?

0 投票
1 回答
322 浏览

javascript - 我如何使用 Service Worker 向我的所有 API 请求添加 Authorization 标头,这是否有意义?

我对内部 API 发出的每个请求都需要一个 Authorization 标头。我正在使用许多 Web 组件(私有的和第三方的)构建一个基于 Polymer 的应用程序。我几乎所有的 AJAX 调用都是通过<iron-ajax>元素进行的。我知道我可以创建一个自定义组件来实现我正在寻找的集中化,但我想知道是否使用服务工作者来拦截对我的 api 的请求并添加所需的标头以及我可能想要的任何其他操作或验证可行的,高性能的,甚至是可能的。特别是因为 Polymer 1.0 还不支持扩展其他组件。

0 投票
2 回答
2253 浏览

javascript - 延迟 HTML5 通知?

我一直在查看 HTML 通知和服务人员的状态,并且想知道 - 是否可以显示延迟通知?基本上,我希望能够说“30 分钟后提醒我”(或其他什么),然后在 30 分钟后向用户推送通知。这可以立即安排,但我没有看到任何允许它的功能。

我是否遗漏了什么,或者在(特别是)Chrome API 的当前状态下是不可能的?

0 投票
2 回答
4304 浏览

javascript - 未从 Service Worker 发送的请求标头

我正在尝试从 Service Worker 获取 Web 服务。该服务是一个使用基本 Apache 身份验证保护的 JSP,因此我必须提供凭据以在请求标头中进行身份验证。以下请求在主窗口中运行良好:

该代码位于 event.waitUntil() 范围内,位于从“推送”事件侦听器调用的函数中。但是,相同的调用失败并返回 401(未授权)。开发者工具中的网络面板显示没有发送标头:

这里有什么遗漏吗?还是无法从 Service Worker 中实现?

一些额外的信息:只是不能使用 XMLHttpRequest,因为它在服务工作者范围内是“未定义”的。检索 JSON 之前 JSP 上的标头:

更新:肯定有来自服务工作者的身份验证标头,因为对非安全 URL 的请求不会失败。没有 Apache 授权的相同服务按预期工作。

0 投票
1 回答
142 浏览

javascript - ServiceWorker 源头

如何在/service-worker.js不初始化额外 AJAX 请求的情况下检索标头?

0 投票
0 回答
1027 浏览

javascript - 是否可以将 ServiceWorker 注入 Chrome 应用程序页?

我想使用 ServiceWorkers 自动将离线缓存添加到加载到 Chrome 应用程序中的webview标签中的页面。根据这个答案,以及我读过的规范,不可能内联 ServiceWorker。有没有办法注入 ServiceWorker 来缓存<webview>Chrome 应用程序中的标签内容?

0 投票
2 回答
5471 浏览

google-chrome - 为什么 ServiceWorkerRegistration 注册成功后,ServiceWorkerRegistration 回调没有命中?

我正在使用以下脚本注册服务人员,并想检查此服务人员是否支持推送?仅出于测试目的,我正在打印“打印服务工作者”,但它没有打印到控制台。请帮助我触发我出错的地方?

提前致谢

0 投票
2 回答
170 浏览

javascript - 需要从不安全的 URL 调用数据以获取 chrome 的 GCM 推送通知

我需要调用一个不安全的 (http://) URL 来从服务工作者文件中获取数据,以获取 chrome 的 GCM 推送通知。这可能吗?

0 投票
3 回答
27066 浏览

javascript - 结合两个承诺

我对 JavaScript 和 Promise 真的很陌生,老实说,我并不完全理解 Promise 是如何工作的,所以我需要一些帮助。

我正在使用 Google Cloud Messaging 将通知从我的站点推送给我的用户。当用户收到通知并单击它时,它会打开一个存储在 IndexedDB 中的 URL。

所以在上面的代码中,我知道 getIdb()...then() 是一个承诺,但是 event.waitUntil 也是一个承诺吗?

上述代码的问题在于,每次单击通知时它都会打开一个 Chrome 实例,我希望它会利用现有实例(如果可用)。以下就是这样做的:

但是,现在我有两个 Promise,getIdb 和 clients.matchAll,我真的不知道如何结合这两个 Promise 和两组代码。任何帮助将不胜感激。谢谢!

作为参考,这里是 IndexDBWrapper.js: