如何在Ruby on Rails中注册服务工作者?

Ter*_*cio 6 ruby ruby-on-rails push-notification google-cloud-messaging service-worker

我正在尝试在Ruby On Rails中注册一个服务工作者来实现推送通知GCM.但没有任何反应.请看下面的代码:

if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register('/assets/service-worker.js')
    .then(initialiseState);
  } else {
    window.Demo.debug.log('Service workers aren\'t supported in this browser.');
Run Code Online (Sandbox Code Playgroud)

这部分工作正常.但是,当我打电话时navigator.serviceWorker.ready.then(function(serviceWorkerRegistration),没有任何反应.

我在搜索引擎上搜索,有一些东西可以帮助我.

有谁能够帮我 ?

Jef*_*ick 2

在您的情况下,服务工作线程脚本service-worker.js需要从与注册它的页面相同的目录 URL 路径或子路径提供服务。

您正在使用路径/assets/service-worker.js,因此除非注册页面也由 提供/assets/,否则它将失败。如果您将 a 放在( 返回 a ).catch(function(error) { console.warn(error); })的末尾,您会看到那里报告的错误。register()Promise

最简单的方法是确保service-worker.js从与网页相同的目录中提供服务,然后调用register('service-worker.js'),它使用相同目录的相对路径。