为啥chrome浏览器经常更换端点

Posted

技术标签:

【中文标题】为啥chrome浏览器经常更换端点【英文标题】:Why chrome browser is changing endpoint frequently为什么chrome浏览器经常更换端点 【发布时间】:2016-08-12 08:39:45 【问题描述】:

我正在为我的网站开发 chrome 推送通知,并在 localhost(本地机器)环境中进行开发。当我第一次订阅通知时,使用特定端点发送推送通知是成功的。我对所有推送消息使用相同的端点。

这里有时推送通知由于端点不匹配而失败。当我在 chrome 控制台(调试模式)中看到时,有不同的端点。 为什么chrome浏览器正在改变端点?在这种情况下,我们如何处理这种情况并更新数据库中的新端点?

示例端点: https://android.googleapis.com/gcm/send/AWERdvfdfdsfdobRH4zlXGuyeuie3543uTBuP6air5dzZfltNa-FKF6K6S-9P5SdfbCbyvn9RdsfsdvU1XwSBwIrekjdK6_i4Cg-5rZAj8UvL1s-Bbr61yvvt_y2Hg9RdsyV

当我下次检查时,上面的端点已更改如下https://android.googleapis.com/gcm/send/reytryMkQwtY:YTUNMdsjjfhsdf349851VS6McDE7s_GITe_djsgfdkjghcdfdfgdftrkddfdsXiwX1vP_XclmDqrKPOAMJDfsYYXdhMX164694Q&ksdhfksdfhkjfhksdcndsk

谢谢。

【问题讨论】:

您如何检索端点?如果您有有效的订阅,getSubscription() 应该返回相同的端点。 (subscribe() 可以返回不同的端点。) 你好 mjs,我正在使用 getsubscription() 但它并不总是在变化。在这里我要澄清一下,最终用户已经允许通知并获得端点并存储到数据库中。再次如果你使用 subscribe() 来获取端点,我们是否会得到不同的端点? 我认为端点不应从一个 getSubscription() 更改为另一个。 (前提是客户端没有取消订阅。)如果您可以重现此内容,我会将其记录为 Chrome 中的错误。 (特别是如果 FF 的行为方式不同。) 为已订阅(已授予权限)的用户再次调用 .pushManager.subscribe 将返回不同的端点? 它不会改变,但是在谷歌浏览器移动端清理历史记录和 cookie 会改变它 【参考方案1】:

推送通知端点依赖于 service-worker。当 service-worker 被注销并再次创建时,PushManager.getSubscription() 方法确实会返回null。然后您需要再次调用subscribe(),这将返回一个新端点。

如果您的服务器在 service-worker 取消注册后尝试向第一个端点发送推送通知,您将收到 NotRegistered(对于 Chrome)或 Gone(对于 Firefox)错误。因此,请确保在应用加载后立即注册新端点,否则设备可能无法访问。

请注意,这似乎不会影响 service-worker 更新。

【讨论】:

以上是关于为啥chrome浏览器经常更换端点的主要内容,如果未能解决你的问题,请参考以下文章

为啥谷歌Chrome浏览器打开一些网页是(1X1)图片、空白的?

时隔8年,Chrome浏览器更换新Logo

chrome浏览器更换favicon.ico后不更新缓存解决方案

烧瓶 api 端点使用邮递员返回正确的响应,但不使用浏览器(chrome)

谷歌浏览器都有哪些好用chrome插件?许昌鲤鱼IT计算机电脑软件编程培训中心

chrome浏览器书签为啥不能同步