Min*_*Kim 2 firefox google-chrome push-notification service-worker web-push
我按照本教程在我的 Web 应用程序中实现推送通知,当它们工作时,它们很快就会停止工作。它似乎可以很好地处理前几个通知,但之后,有时不到五分钟,订阅就会过期,根据我的后端。我从推送服务中收到错误代码 410,教程说这意味着订阅已过期。
这太疯狂了,订阅怎么会在不到五分钟的时间内到期?我搜索了我的问题,似乎没有其他人遇到过这个问题,有些人甚至说订阅可以持续数年!
我尝试在我的 service worker 中为“pushsubscriptionchange”事件实现一个事件监听器,但根据Serginho 的回答,Chrome 自 2019 年起没有实现该事件,我认为从那时起就没有改变。
哦,虽然 Chrome 可以处理订阅(但如上所述只能处理一次/两次),但 Firefox 甚至不做任何事情。我感觉我快疯了。但是,如果我使用此站点测试推送订阅功能本身,它可以在 Firefox 中运行!和铬!他们在做什么而我不是?它们显示的代码与我上面链接的教程完全相同。
我现在还能做什么?我已经考虑过可能会创建一个间隔setInterval()并每隔一秒左右重新订阅用户,但我认为这行不通。
任何帮助,将不胜感激。
你绝对需要pushsubscriptionchange在你的服务工作者中处理。否则,当订阅到期并被新订阅替换时,您将失去它。
Chrome 和大多数浏览器实际上会触发该事件(我不知道您在哪里阅读了不同的内容)。我确信它会被触发,因为在我们的推送服务中,我们每小时从该事件中收到数千次点击。
如果您需要有关如何实现该事件的灵感,请查看我们的 Service Worker。然后在您的服务器上,您只需用新订阅替换旧订阅即可。
\n\n我按照本教程在我的网络应用程序中实现推送通知,当它们工作时,它们很快就会停止工作。它似乎可以很好地处理前几个通知,但根据我的后端,有时不到五分钟,订阅就会过期。
\n
我认为订阅不可能在五分钟内到期。事实上,据我所知,Firefox 或 Chrome 中的订阅永远不会过期。
\n\n\n我从推送服务中收到错误代码 410,教程称该错误代码意味着订阅已过期。
\n
HTTP 410 Gone 错误表示订阅不再存在\xe2\x80\x94 ,这与表示订阅已过期不同。还有其他方式可能会导致订阅不再存在;例如:
\npushSubscription对象有一个unsubscribe()方法 [ MDN link ],如果您在站点 JavaScript 中调用该方法,则推送订阅将被删除。我不知道您的设置中的任何一个是否合理。我建议在客户端代码中添加尽可能多的日志记录,以尝试缩小可能出现问题的范围。
\n