从serviceworker中获取和显示推送数据
get and show push data from serviceworker in chrome
我使用pushwoosh在我的web应用程序中接收推送通知。每件事都工作得很好,在serviceworker监听器中收到了推送消息,但我想从serviceworker中获得推送消息数据,并在另一个js类
中处理它main.js:
if ('serviceWorker' in navigator) {
console.log('Service Worker is supported');
navigator.serviceWorker.register('sw.js').then(function() {
return navigator.serviceWorker.ready;
}).then(function(reg) {
console.log('Service Worker is ready :^)', reg);
// TODO
}).catch(function(error) {
console.log('Service Worker error :^(', error);
});
}
// get push message data in main.js and process it
service worker:
self.addEventListener('push', function(event) {
console.log('Push message', event);
var title = 'Push message';
event.waitUntil(
self.registration.showNotification(title, {
'body': 'The Message',
'icon': 'images/icon.png'
}));
});
正如我在评论中提到的,对于service worker而不是标准worker来说,这个用例似乎有点奇怪,但是:
你可以让service worker在收到推送消息时向所有连接的客户端发送消息。
这个答案显示了一个service worker与客户端对话的完整示例,但基本上:
-
它管理的页面侦听消息:
navigator.serviceWorker.addEventListener('message', event => { // use `event.data` });
-
service worker这样发送给它们:
self.clients.matchAll().then(all => all.forEach(client => { client.postMessage(/*...message here...*/); }));
或者使用ES5和更早的语法(但我不认为任何支持service worker的浏览器都不支持箭头函数):
页面听:
navigator.serviceWorker.addEventListener('message', function(event) {
// use `event.data`
});
工人发送:
self.clients.matchAll().then(function(all) {
all.forEach(function(client) {
client.postMessage(/*...message here...*/);
});
});
相关文章:
- 如何将json数据显示为html
- 解耦按钮(两个按钮同时切换),并根据数据显示相应的按钮
- 将json提要数据显示为html
- 使用Ajax Get方法将数据显示到特定元素中
- 如何将数据显示为线性highChart
- Json显示来自网站的数据显示仅未定义
- 使 ajax 请求和成功数据显示在 id <选择>选择>部分中
- 在按钮单击时将图像URL数据显示到弹出框中,而无需禁用背景
- 如何在循环中将 json 数据显示为 HTML
- 如何使用javascript在html中将firebase数据显示为列表
- PHP同时循环数组数据显示到javascript中
- 原始图像数据显示
- 如何在 y 轴上将数据显示为 KB、MB、GB、TB
- Ajax 数据显示在包含 10 行的表中
- 如何让 Mathjax.js 与 ANCII.js 将附加的 json 数据显示为正确的公式
- 调用 Worklight 适配器并将列表视图中的 JSON 数据显示为字符串
- Jquery/Javascript Datatables : 如何在行选择时将行数据显示到 html 文本字段中
- 双击 td 时,如何在警告框中将数据库中的数据显示为 html 表
- 日期之间的数据显示所有头
- 如何使用模板中的数据显示谷歌地图