服务工作者使用spring MVC获取事件handleR

时间:2017-06-02 12:28:56

标签: javascript java spring-mvc service-worker progressive-web-apps

我正在尝试使用离线功能制作一个弹簧MVC应用程序。除了获取处理程序之外,一切正常。

问题:

我能够成功注册我的服务工作者,但是当涉及到获取处理程序时,它无法正常工作。

我尝试过的事情:

在获取处理程序的上方和下方使用了调试器。我发现它永远不会被调用。我无法找出这种奇怪行为背后的原因。

self.addEventListener('install', function(event) {
    console.log('The service worker is being installed.');  
    event.waitUntil(precache());
});

self.addEventListener('fetch', function(event) {
    alert("Hi");  
});

1 个答案:

答案 0 :(得分:0)

"a service worker registration ties the provided script URL to a scope, which is subsequently used for navigation matching."

你可能正在做的事情 navigator.serviceWorker.register( '{SOME_RESOURCE_PATH}/service-worker.js')甚至设置scope: './'。这样做的问题在于它只会在https://foo.bar/{SOME_RESOURCE_PATH}/上触发您的提取。这意味着您需要将sw设置到站点的根目录以删除所需的资源路径。您需要做的是更改配置以将sw放在网站的根目录上。

离。您可以在mvc-config.xml

中做些什么
<mvc:resources mapping="/**" location="classpath:/PATH_TO_SW/"/>

然后注册sw看起来像

navigator.serviceWorker.register( '/service-worker.js')