Push notification 调用ServiceWorkerRegistration.pushManager.subscribe()时实际会发生什么?
subscribe方法是否在客户端和推送服务之间建立了任何类型的连接?或者将消息发送到正确的客户端所需的所有必要信息都存储在端点URL中,因此不需要连接Push notification 调用ServiceWorkerRegistration.pushManager.subscribe()时实际会发生什么?,push-notification,push,service-worker,subscribe,web-push,Push Notification,Push,Service Worker,Subscribe,Web Push,subscribe方法是否在客户端和推送服务之间建立了任何类型的连接?或者将消息发送到正确的客户端所需的所有必要信息都存储在端点URL中,因此不需要连接 如果没有连接,如果客户端移动(更改IP地址),推送服务如何知道更新IP地址 当您调用subscribe时,浏览器将连接到推送服务(例如或),并请求一个新端点 然后,承诺得到了解决,您可以使用AJAX将该端点发送到您自己的应用程序服务器(或类似的服务)。您的服务器可以使用该端点发送通知(类似于电子邮件地址) 最后,每次用户打开浏览器时,它都会连接
如果没有连接,如果客户端移动(更改IP地址),推送服务如何知道更新IP地址 当您调用
subscribe
时,浏览器将连接到推送服务(例如或),并请求一个新端点
然后,承诺得到了解决,您可以使用AJAX将该端点发送到您自己的应用程序服务器(或类似的服务)。您的服务器可以使用该端点发送通知(类似于电子邮件地址)
最后,每次用户打开浏览器时,它都会连接到GCM,通过显示其端点(或者可能是与之相关的秘密)进行身份验证,并读取任何新通知
有关详细信息:
如果没有连接,如果客户端移动(更改IP地址),推送服务如何知道更新IP地址
必须存在连接,否则无法传递通知。如果IP发生变化,这不是问题:是客户端连接到推送服务,而不是相反
披露:我是Pushpad创始人如果浏览器未打开,则可以发送通知,因此如果用户更改位置但未打开浏览器(因此未连接到GCM),则在他们打开浏览器并建立连接之前,是否不会发送通知?这是怎么回事?@NickSearle你不能直接使用GCM来管理位置。GCM非常简单,只知道如何向给定的端点/设备发送通知。必须跟踪用户位置的是您的web应用程序/服务:目前,您只能在用户浏览您的网站或收到推送通知时更新它。建议致电pushManager.getSubscription()每当用户访问您的应用程序时,因为订阅对象在其生命周期内可能会发生更改。如果订阅对象不能成为有关端点的任何信息(因为GCM无法知道端点是否更改),您知道订阅对象的哪些更改吗?