Проект Mozilla представил технологию отправляемых с сервера уведомлений для браузера

Разработчики Mozilla представили начальный прототип технологии Push Notifications, позволяющей организовать доставку уведомлений, отправляемых клиентам по инициативе сайтов. Используя представленную технологию сайт может отправить пользователю небольшое сообщение, даже когда отправляющий уведомление сайт в данный момент не открыт в браузере пользователя. В настоящее время похожий сервис в iOS и Android, но он является специфичным для каждой из этих платформ. Задачей Mozilla является создание универсальной реализации, которая могла бы выступать в роли web-стандарта. Технологию "Push Notifications" не стоит путать с механизмом "Desktop Notification", требующим для своей работы наличия открытого в браузере окна с сайтом.

Технология рассчитана на непосредственный вывод уведомлений пользователю (вывод уведомления осуществляет браузер) и является чем-то средним между email и системами мгновенного обмена сообщениями. В качестве областей возможного применения называется отправка webmail-системами уведомлений о получении новых email, генерация сообщений о наступлении каких-то событий, например, информация о проблемах от системы мониторинга.

Чтобы сообщения могли быть отправлены пользователю, сайт запрашивает подтверждение операции, при получении которого генерируется специальный URL-идентификатор доставки. Процесс доставки контролируется на стороне браузера, что защищает систему от возможных рассылок спама, - браузер забирает только сообщения из каналов доставки, на которое явно подписался пользователь. Отменив подписку, пользователь больше не увидит сообщений, даже если сервер продолжит их отправлять.

Получив URL-идентификатор, серверное ПО сайта при необходимости отправки сообщения определённому пользователю, формирует по данному URL обычный POST-запрос с пакетом данных в json-формате (передаётся заголовок сообщения, тело сообщения, ссылка для перехода и другие информационные данные). URL-идентификаторы ссылаются на специальный промежуточный сервер нотификации (Notification Service), которые занимается приёмом запросов с серверов и организацию доставки сообщений клиентам. Периодически браузер проверяет наличие новых сообщений на серверах нотификации и забирает те, на которые имеется активная подписка. При этом доставка будет осуществлена даже если сообщение отправлено в момент неактивности пользователя, например, когда браузер не запущен. Способ доставки с сервера нотификации в браузер планируется реализовать с использованием методов, уже применяемых при работе функции синхронизации настроек. В качестве сервера нотификации могут выступать как централизованные службы, так и поднятое на своих мощностях специальное ПО.

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});    };   }  


Источник:
http://www.opennet.ru/opennews/art.shtml?num=32992

<= Назад
Комментарии
]]> ipv6 ready Kiev LUGLinux4MeНостальгияЛичный сайт skeletora ]]>