Когда вы вызываете subscribe
, браузер подключается к услуге push (например, GCM или Mozilla push service) и запрашивает новую конечную точку.
Тогда обещание будет решено, и вы можете отправить эту конечную точку с помощью AJAX на свой собственный сервер приложений (или службу, как Pushpad). Ваш сервер может использовать эту конечную точку для отправки уведомлений (это похоже на адрес электронной почты).
И, наконец, каждый раз, когда пользователь открывает браузер, он подключается к GCM, он аутентифицируется, показывая свою конечную точку (или, возможно, секрет, связанный с ней), и читает любое новое уведомление.
Для получения более подробной информации: https://www.w3.org/TR/push-api/#sequence-diagram
Если нет никакой связи, как бы толчок службы знать, чтобы обновить IP-адрес, если клиент перемещается (изменение IP-адреса)?
Возможно соединение, в противном случае сообщение не может быть доставлено. Это не проблема, если IP изменяется: это клиент, который подключается к службе push, а не наоборот.
Уведомления могут быть отправлены, если браузер не открыт, поэтому, если пользователь меняет местоположение, но не открывает браузер (так что никакого подключения к GCM), это уведомления, которые просто не доставлены, пока они не откроют браузер и не сделают связь? Как это работает? –
@NickSearle Вы не можете использовать GCM для управления местоположением. GCM очень прост и только знает, как доставить уведомление к данной конечной точке/устройству. Это ваше веб-приложение/служба, которая должна отслеживать местоположение пользователя: на данный момент вы можете обновить его только в том случае, если пользователь просматривает ваш сайт или когда он получает push-уведомление. – collimarco
Рекомендуется называть pushManager.getSubscription() всякий раз, когда пользователь обращается к вашему приложению, потому что объект подписки может меняться в течение всего срока его службы. Знаете ли вы, какие изменения касаются объекта подписки, если он не может быть никакой информацией о конечной точке (поскольку GCM не может знать, изменяется ли конечная точка)? –