HTML5服务人员:生命周期、持久性和代码加载

HTML5服务人员:生命周期、持久性和代码加载,html,service-worker,Html,Service Worker,我希望我的web应用偶尔在用户桌面上显示通知。GMail和Facebook使用同样的技术 使用HTML5通知API来获得用户的许可,并随后显示通知,这是非常有文档记录且简单明了的。但在我的例子中,我想向用户显示这些通知,即使他没有浏览我的网站。我的研究将我引向服务工作者API。我已经浏览了一些服务人员教程,虽然我理解了大部分内容,但仍有以下问题: (1) 我了解下载=>Install=>Activate周期,但我无法确切了解以前安装的Service Worker线程何时启动或关闭。我找到的唯一相

我希望我的web应用偶尔在用户桌面上显示通知。GMail和Facebook使用同样的技术

使用HTML5通知API来获得用户的许可,并随后显示通知,这是非常有文档记录且简单明了的。但在我的例子中,我想向用户显示这些通知,即使他没有浏览我的网站。我的研究将我引向服务工作者API。我已经浏览了一些服务人员教程,虽然我理解了大部分内容,但仍有以下问题:

(1) 我了解下载=>Install=>Activate周期,但我无法确切了解以前安装的Service Worker线程何时启动或关闭。我找到的唯一相关的引语是线程“可以随时启动和关闭”,这是一篇老文章。我们现在知道更多了吗?特别是:线程是在用户启动计算机时启动的吗?还是在用户启动后第一次打开浏览器时启动?等同样,线程何时关闭?可以想象它会停下来几分钟吗?小时?几天

(2) 如何保持一个值?在不涉及细节的情况下,在显示通知后,我需要在用户的计算机上保留一个32位的值。这就是我需要的“状态”信息的范围。但由于未知的原因,文章指出localStorage不能通过服务工作者上下文使用。那么我应该如何存储该值

(3) 我的服务人员代码将依赖于我创建的另一个对象,该对象位于“utils.js”中。如何将其加载到内存中,以便我的服务人员可以看到它?使用我的web应用程序,我可以使用HTML中的
标记来完成此操作。但在本例中,没有HTML,只有JavaScript。那么,我如何告诉服务人员将此代码加载到内存中呢

(4) 如何调试我的服务人员?使用标准web应用程序,我可以在Chrome中点击Alt-Cmd-I打开调试面板。但在本例中,我并没有调试特定的站点——我调试的是一个服务工作者线程

谢谢

费斯图斯

  • 在发生某些事件之前,不会再次执行服务工作线程。在您的情况下,您希望在
    push
    事件发生时(即服务器向客户端发送通知时)执行服务工作者
  • 您可以使用IndexedDB(是IndexedDB之上的一个简单库,它实现了一个类似于localStorage的接口)
  • Firefox中仍在使用开发人员工具(您可以在某些版本的Firefox中使用about:serviceworkers和about:debugging),在Chrome中,您可以在“源”和“资源”选项卡之间的“开发人员”面板中看到服务人员(您也可以从那里模拟推送事件):

  • 在上有几个使用Web推送API的示例。

    服务工作者API是为持久化浏览器会话而设计的吗?我只是好奇,如果你浏览到你的领域之外的其他网站,你的服务人员会如何回帖?