ServiceWorker和推送通知负载

3

社区:

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

推送通知:我通过 Google Clud Message 和 NodeJS 进行了 GCM 集成,遵循这篇 文章。问题在于,当 GCM 向客户端 (Chorme)发送信息时,由 GCM 生成的消息负载在 ServiceWorker 监听器中的通知中无法访问,如果能访问就可以做出决策了。你有关于通知中的数据负载何时启用的任何想法吗?

注册:由于 ES6 已非常成熟,因此以其他方式(例如)注册 ServiceWorker 将会很好:

import sw from './sw.js'

navigator.serviceWorker.register(sw, {scope: '/'}).then(function (registration) {
 // Registration was successful
 console.log('ServiceWorker registration successful with scope: ', registration.scope);
}).catch(function (err) {
 // registration failed :(
 console.log('ServiceWorker registration failed: ', err);
});

这个可行吗?有意义吗?

谢谢!!!


你的注册示例代码似乎不太可能实现,因为你需要传递给.register的是一个全新的文件,在一个全新的 JS 环境中加载。你发布的代码会在页面的 JS 环境中执行 service worker,然后尝试将一些引用传递给它。 - loganfsmyth
1个回答

2
  1. "支持推送消息的加密负载"错误跟踪进度,以便在通知中公开负载。该错误是针对Chrome的,但其他浏览器供应商可能会采用相同的方法。
  2. 服务工作程序升级流程与存在表示服务工作程序代码的特定JavaScript文件的想法紧密相关,并且可以定期逐字节检查该文件以查看是否有任何更新。如果它是一个注册的内存JavaScript对象,与文件分离,则升级流程将无法按规定工作。我不认为您会看到您提出的更改添加到规范中。

感谢您回答@Jeff Posnick 关于第一点,没有什么可说的,答案非常清晰... 关于第二点,如果能够灵活地在另一个线程上运行更多脚本内容,比如当前线程中导入服务(类)的实例,那将是非常好的。 所有这些都是为了更好地利用SS6的导入和导出系统。 - Cristian Rinaldi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接