Проект Mozilla представил технологию отправляемых с сервера уведомлений для браузера
4 февраля 2012 года
Разработчики Mozilla представили начальный прототип технологии Push Notifications, позволяющей организовать доставку уведомлений, отправляемых клиентам по инициативе сайтов. Используя представленную технологию сайт может отправить пользователю небольшое сообщение, даже когда данный сайт не открыт в браузере пользователя. В настоящее время похожие сервисы реализованы в iOS и Android, но они специфичны для каждой из этих платформ. Задачей Mozilla является создание универсальной реализации, которая могла бы выступать в роли web-стандарта. Технологию "Push Notifications" не стоит путать с механизмом "Desktop Notification", требующим для своей работы наличия открытого в браузере окна с сайтом.
Технология Push Notifications рассчитана на непосредственный вывод уведомлений пользователю (вывод уведомления осуществляет браузер) и является чем-то средним между email и системами мгновенного обмена сообщениями. В качестве областей возможного применения называется отправка webmail-системами уведомлений о получении новых email, генерация сообщений о наступлении каких-то событий, например, информации о проблемах от системы мониторинга или достижения курса валюты какого-то уровня.
Чтобы сообщения могли быть отправлены пользователю, сайт запрашивает подтверждение операции, при получении которого генерируется специальный URL-идентификатор доставки. Процесс доставки контролируется на стороне браузера, что защищает систему от возможных рассылок спама, - браузер забирает только сообщения из каналов доставки, с идентификаторами на которые явно подписался пользователь. Отменив подписку, пользователь больше не увидит сообщений, даже если сервер продолжит их отправлять.
Получив URL-идентификатор, серверное ПО сайта при необходимости отправки сообщения определённому пользователю, формирует по данному URL обычный POST-запрос с пакетом данных в json-формате (передаётся заголовок сообщения, тело сообщения, ссылка для перехода и другие информационные данные). URL-идентификаторы ссылаются на специальный промежуточный сервер нотификации ( Notification Service), который занимается приёмом запросов с серверов и организацией доставки сообщений клиентам. Периодически браузер проверяет наличие новых сообщений на серверах нотификации и забирает те, на которые имеется активная подписка. При этом доставка будет осуществлена даже если сообщение отправлено в момент неактивности пользователя, например, когда браузер не запущен. Способ доставки с сервера нотификации в браузер планируется реализовать с использованием методов, уже применяемых при работе функции синхронизации настроек (Firefox Sync). В качестве сервера нотификации могут выступать как централизованные службы, так и поднятое на своих мощностях специальное ПО.
API новой системы нотификации базируется на объекте navigator.notification. На начальном этапе подписки на уведомления, JavaScript-код сайта, который желает отправлять уведомления, вызывает метод notification.requestRemotePermission(), что приводит к выводу специального диалогового окна с вопросом о подтверждении подписки. Если подписка подтверждена на выходе формируется объект для дальнейшего слежения за событиями, связанными с оформлением подписки. Одновременно формируется запрос к серверу нотификации, в результате которого он генерирует уникальный URL-идентификатор, привязывающий сайт к пользователю. Затем данный URL-идентификатор возвращается в скрипт сайта через callback-вызов request.onsuccess, после чего передаётся на сервер, желающий отправлять сообщения.
var notification = (navigator.notification || navigator.mozNotification || navigator.webkitNotification); if (notification) { // Спрашивает подтверждения получения уведомлений var request = notification.requestRemotePermission(); request.onsuccess = function() { var url = request.result; console.log('New push URL: ' + url); // Сохраняет URL-идентификатор на своём сервере jQuery.post('/push-urls/', {url: url}); }; }
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.