首页 文章

如何在服务工作者中保留数据

提问于
浏览
3

截至目前,Chrome不支持传递其他数据来推送从GCM收到的通知 . 因此,每当收到推送通知时,我都必须从我的服务工作者执行 fetch . 到现在为止还挺好 .

But: 我需要在 fetch 中执行的http请求中包含一个请求参数 . 如何告诉服务工作者我的参数?

What I've tried so far

使用 postMessage 告诉我的服务工作者请求参数:

var serviceWorkerData = {};

self.addEventListener('message', function (evt) 
{
    console.log('service worker received', evt.data);

    serviceWorkerData = evt.data.myData;
});

self.addEventListener('push', function(event)
{
    event.waitUntil
    (
        fetch("http://my.url", {
            method: 'post',
            body: 'myData=' + serviceWorkerData
        }).then(function(response)
        {
            //...
        })
    );
});

Why this is not working

但这并不是持久性的,即在我关闭浏览器并再次打开它之后,我的 serviceWorkerData 就丢失了 . localStorage 在服务工作者中不可用,所以如何在此处获得持久性?

1 回答

相关问题