2016-09-30 7 views
1

Подходит ли метод подписки к любому соединению между клиентом и службой push? Или все необходимые данные, необходимые для отправки сообщения правильному клиенту, хранящемуся в URL-адресе конечной точки, так что соединение не требуется?Что происходит, когда мы вызываем ServiceWorkerRegistration.pushManager.subscribe()?

Если соединение отсутствует, как известно службе push, чтобы обновить IP-адрес, если клиент перемещается (меняя IP-адрес)?

ответ

1

Когда вы вызываете subscribe, браузер подключается к услуге push (например, GCM или Mozilla push service) и запрашивает новую конечную точку.

Тогда обещание будет решено, и вы можете отправить эту конечную точку с помощью AJAX на свой собственный сервер приложений (или службу, как Pushpad). Ваш сервер может использовать эту конечную точку для отправки уведомлений (это похоже на адрес электронной почты).

И, наконец, каждый раз, когда пользователь открывает браузер, он подключается к GCM, он аутентифицируется, показывая свою конечную точку (или, возможно, секрет, связанный с ней), и читает любое новое уведомление.

Для получения более подробной информации: https://www.w3.org/TR/push-api/#sequence-diagram

Если нет никакой связи, как бы толчок службы знать, чтобы обновить IP-адрес, если клиент перемещается (изменение IP-адреса)?

Возможно соединение, в противном случае сообщение не может быть доставлено. Это не проблема, если IP изменяется: это клиент, который подключается к службе push, а не наоборот.

+1

Уведомления могут быть отправлены, если браузер не открыт, поэтому, если пользователь меняет местоположение, но не открывает браузер (так что никакого подключения к GCM), это уведомления, которые просто не доставлены, пока они не откроют браузер и не сделают связь? Как это работает? –

+0

@NickSearle Вы не можете использовать GCM для управления местоположением. GCM очень прост и только знает, как доставить уведомление к данной конечной точке/устройству. Это ваше веб-приложение/служба, которая должна отслеживать местоположение пользователя: на данный момент вы можете обновить его только в том случае, если пользователь просматривает ваш сайт или когда он получает push-уведомление. – collimarco

+1

Рекомендуется называть pushManager.getSubscription() всякий раз, когда пользователь обращается к вашему приложению, потому что объект подписки может меняться в течение всего срока его службы. Знаете ли вы, какие изменения касаются объекта подписки, если он не может быть никакой информацией о конечной точке (поскольку GCM не может знать, изменяется ли конечная точка)? –

Смежные вопросы