我正在写一个图书馆,我将为第三方提供在其网站上运行服务工作者的图书馆.它需要拦截所有网络请求,但我想让他们建立自己的服务工作者,如果他们喜欢.
我可以让两个服务工作者拦截相同的提取并在它们之间提供某种优先级/顺序吗?或者我应该使用其他一些模式吗?
谢谢
TL; DR - 我希望我的服务工作者在第一次访问我的网站后立即激活,而不是在第一次刷新之后激活.
细节:
我已经使用服务工作者构建了一个渐进式Web应用程序,但是注意到在第一次加载时(安装SW时),在用户刷新页面之前,它不会拦截任何网络请求.
有什么办法可以让服务工作者在安装后立即开始拦截请求吗?
我在我的页面上注册了一个ServiceWorker,并希望将一些数据传递给它,以便它可以存储在IndexedDB中,以后用于网络请求(它是一个访问令牌).
使用网络请求并使用fetch在SW端捕获它们是正确的,还是有更聪明的东西?
请注意未来的读者对我有类似的想法:
在SW注册对象上设置属性,例如将self.registration.foo设置为服务工作者中的函数,并在页面中执行以下操作:
navigator.serviceWorker.getRegistration().then(function(reg) { reg.foo; })
Run Code Online (Sandbox Code Playgroud)
'TypeError:reg.foo不是函数'的结果.我认为这与ServiceWorker的生命周期有关,这意味着你无法修改它并期望将来可以访问这些修改,因此任何具有SW的接口都可能必须是postMessage样式,所以也许只使用fetch是最好的方式去......?
我正在使用基于新服务工作者的API在Web上使用推送通知,并具有以下用例:
鉴于Push API对userVisible的限制,有没有办法实现这种体验?
我的服务工作者项目一切正常,但突然间我看到以下错误:
Uncaught (in promise) DOMException: Failed to register a ServiceWorker: ServiceWorker cannot be started
Run Code Online (Sandbox Code Playgroud)
这是在index.html:1上报告的,虽然我在一个名为sw.js的文件中注册了SW.
我在Google上找不到任何内容 - 有关导致此错误发生的原因的任何指导?
在服务工作者注册上使用showNotification方法,是否可以设置显示的通知的样式,例如文本的颜色?
我对Android和桌面平台都很好奇.
notifications google-chrome service-worker web-push progressive-web-apps
如果我同时拥有本机应用程序和使用由服务工作者提供支持的Web推送通知的渐进式Web应用程序,是否有办法阻止用户在选择接收来自网站的通知并且还安装了应用程序时接收重复通知?
我正在与Service Workers一起编写我的第一个应用程序,并试图获取注册以便与pushManager进行交互。
我可以使用以下任一方法执行此操作:
nagivator.serviceWorker.getRegistration()
Run Code Online (Sandbox Code Playgroud)
要么
navigator.serviceWorker.ready.then()
Run Code Online (Sandbox Code Playgroud)
我应该使用哪个?有什么区别?
上下文:我编写了一个Django应用程序,我现在已将其部署到Elastic Beanstalk(AWS).
在本地开发中,我一直在使用自定义请求标头SESSION_TOKEN,然后我可以使用它request.META.get('HTTP_SESSION_TOKEN').在生产中我看到错误,因为该标题是不可访问的(在我的Django服务器看到的所有请求中,它只是丢失了).
另外我的其他标准标题工作正常,它只缺少自定义标题.注意我没有设置HTTP_AUTHORIZATION,这与django rest_framework中缺少的Authorization标头不一样,是否需要apache?.
出了什么问题?如何在生产中访问后端的自定义标头?
在与服务工作者一起使用新的Push API时,我可以使用Google的GCM以外的推送服务吗?