我一直在研究
PUSH API
并按预期注册服务人员。大致上我遵循
Mozilla recipes
为了这个。
一般来说,您将创建两个javascript文件:一个用于您要注册的服务工作者,另一个用于执行实际的注册-让我们调用这个index.js-,在我的例子中,它包含一个registerWorker()函数。我包含一个html文件(比如push.html),它在加载时调用这个函数,这样调用这个html文件的浏览器将注册服务工作者。到目前为止,这一切在开发环境中运行良好。
当我想把它移植到我的服务器时,问题就开始了。如果我将服务工作者和index.js移植到我的服务器(例如Apache 2服务器),我会突然收到一条消息,告诉我服务工作者不在导航器中。我一直在尝试不同的策略,但至今没有成功。
因此,我的问题是:为了实现上述目的,在服务器上放置所需的javascript文件的最佳方法是什么?
编辑:
我将在下面添加push.html文件:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Simple Push Notification - ServiceWorker Cookbook</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body onload="registerServiceWorker(12)">
<script src="./js/index.js"></script>
</body>
</html>
据我所见,唯一的区别是我从开发环境中的localhost调用这个文件,从服务器调用http://{myserver}:{myport}/。我不希望有任何不同的行为,除非它可能与SSL要求或CORS过滤器有关。。。
编辑2:
好吧..根据这篇文章,我找到了最可能的原因:
Can't find serviceWorker in navigator anymore