Как задается URL-адрес push-службы API Push?

Push API определяет push-сервис как

система, которая позволяет серверам приложений отправлять push-сообщения в веб-приложение.

Подписка на сервис создается вызовом serviceWorkerRegistration .pushManager.subscribe() без каких-либо параметров.

Как настроен URL-адрес для этой службы push-уведомлений? Я ожидал, что .subscribe() примет параметр URL для службы.

Родственная спецификация Push API, общая доставка событий с использованием HTTP Push, говорит:

push-сервис: этот ресурс используется для создания подписок на push-сообщения (см. раздел 3). URL-адрес службы push настраивается в пользовательских агентах.

Но не уточняется, как будет происходить эта конфигурация.


person Noah Freitas    schedule 14.07.2015    source источник


Ответы (2)


Эта цитата из второго цитируемого вами документа отвечает на вопрос:

Этот документ намеренно не описывает, как обнаруживается push-сервис. Обнаружение push-сервисов оставлено на будущее, если оно вообще окажется необходимым. Ожидается, что пользовательские агенты будут настроены с URL-адресом для службы push-уведомлений.

На данный момент браузеры поставляются со встроенными знаниями о некоторых конкретных службах push-уведомлений, таких как GCM в случае Chrome. Это упоминается в Push-уведомлениях в открытом Интернете статья на HTMLRocks:

Chrome использует GCM для обработки отправки и доставки push-сообщений... Другие браузеры могут свободно использовать любой push-сервис...

Но было бы интересно посмотреть, могут ли браузеры открываться в будущем, чтобы, как вы предлагаете, мы могли указать выбранную нами службу в аргументе subscribe.

person Brendan Ritchie    schedule 14.07.2015

Сначала вы регистрируете работника службы с помощью navigator.serviceWorker.register('/some-service-worker.js'), а затем, когда вы вызываете serviceWorkerRegistration .pushManager.subscribe(), этот seriveceWorkerRegistration ссылается на работника службы, который вы только что зарегистрировали.

Лучше всего продемонстрировать это на примере:

navigator.serviceWorker.register('/some-service-worker.js').then(function() {
    navigator.serviceWorker.ready.then(function(serviceWorkerRegistration) {
        serviceWorkerRegistration.pushManager.subscribe({userVisibleOnly: true}).then(function() {/*...*/});
    });
});
person Oleg    schedule 02.12.2015
comment
Да, я понимаю, как получить Push-подписку, вопрос конкретно в том, можно ли настроить URL-адрес push-сервиса при получении подписки. Ответ в настоящее время нет; он встроен в каждый браузер. - person Noah Freitas; 03.12.2015