Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Push notification 调用ServiceWorkerRegistration.pushManager.subscribe()时实际会发生什么?_Push Notification_Push_Service Worker_Subscribe_Web Push - Fatal编程技术网

Push notification 调用ServiceWorkerRegistration.pushManager.subscribe()时实际会发生什么?

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将该端点发送到您自己的应用程序服务器(或类似的服务)。您的服务器可以使用该端点发送通知(类似于电子邮件地址) 最后,每次用户打开浏览器时,它都会连接

subscribe方法是否在客户端和推送服务之间建立了任何类型的连接?或者将消息发送到正确的客户端所需的所有必要信息都存储在端点URL中,因此不需要连接


如果没有连接,如果客户端移动(更改IP地址),推送服务如何知道更新IP地址

当您调用
subscribe
时,浏览器将连接到推送服务(例如或),并请求一个新端点

然后,承诺得到了解决,您可以使用AJAX将该端点发送到您自己的应用程序服务器(或类似的服务)。您的服务器可以使用该端点发送通知(类似于电子邮件地址)

最后,每次用户打开浏览器时,它都会连接到GCM,通过显示其端点(或者可能是与之相关的秘密)进行身份验证,并读取任何新通知

有关详细信息:

如果没有连接,如果客户端移动(更改IP地址),推送服务如何知道更新IP地址

必须存在连接,否则无法传递通知。如果IP发生变化,这不是问题:是客户端连接到推送服务,而不是相反


披露:我是Pushpad创始人

如果浏览器未打开,则可以发送通知,因此如果用户更改位置但未打开浏览器(因此未连接到GCM),则在他们打开浏览器并建立连接之前,是否不会发送通知?这是怎么回事?@NickSearle你不能直接使用GCM来管理位置。GCM非常简单,只知道如何向给定的端点/设备发送通知。必须跟踪用户位置的是您的web应用程序/服务:目前,您只能在用户浏览您的网站或收到推送通知时更新它。建议致电pushManager.getSubscription()每当用户访问您的应用程序时,因为订阅对象在其生命周期内可能会发生更改。如果订阅对象不能成为有关端点的任何信息(因为GCM无法知道端点是否更改),您知道订阅对象的哪些更改吗?