From f12beab0b9dd265aaa9085871d43ccfa567bb476 Mon Sep 17 00:00:00 2001 From: Сандро Date: Thu, 10 Jun 2021 23:25:35 +0500 Subject: Перевод (#1110) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Перевод перевод, правки и буква "ё" * Правка перевода >— это продлевает время жизни события до момента запуска уведомления и гарантирует, что метод showNotification будет завершён полностью. --- files/ru/conflicting/web/api/push_api/index.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/files/ru/conflicting/web/api/push_api/index.html b/files/ru/conflicting/web/api/push_api/index.html index 289aa4704d..b97028f3b5 100644 --- a/files/ru/conflicting/web/api/push_api/index.html +++ b/files/ru/conflicting/web/api/push_api/index.html @@ -21,7 +21,7 @@ original_slug: Web/API/Push_API/Using_the_Push_API

-

Чтобы запустить демо, следуйте инструкциям на странице push-api-demo README. Заметьте, что серверная компонента все ещё нуждается в небольшой доработке для запуска в Chrome и в общем запускается более разумным путём. Но аспекты Push все ещё могут быть полностью понятны; мы углубимся в это после того, как просмотрим технологии в процессе.

+

Чтобы запустить демо, следуйте инструкциям на странице push-api-demo README. Заметьте, что серверная компонента всё ещё нуждается в небольшой доработке для запуска в Chrome и в общем запускается более разумным путём. Но аспекты Push всё ещё могут быть полностью понятны; мы углубимся в это после того, как просмотрим технологии в процессе.

Обзор технологии

@@ -62,7 +62,7 @@ original_slug: Web/API/Push_API/Using_the_Push_API
  • Запрос на разрешение web-уведомлений или что-то другое, что вы используете и для чего необходимо разрешение.
  • Регистрация сервис воркера для контроля над страницей с помощью вызова {{domxref("ServiceWorkerContainer.register()")}}.
  • Подписка на сервис push-уведомлений с помощью {{domxref("PushManager.subscribe()")}}.
  • -
  • Запрашивание конечной точки, соответствующей подписчику, и генерация публичного ключа клиента ({{domxref("PushSubscription.endpoint")}} и {{domxref("PushSubscription.getKey()")}}. Заметьте, что getKey() на данный момент экспериментальная технологий и доступна только в Firefox.)
  • +
  • Запрашивание конечной точки, соответствующей подписчику, и генерация публичного ключа клиента ({{domxref("PushSubscription.endpoint")}} и {{domxref("PushSubscription.getKey()")}}. Заметьте, что getKey() на данный момент экспериментальная технология и доступна только в Firefox.)
  • Отправка данных на сервер, чтобы тот мог присылать push-сообщения, когда необходимо. Это демо использует {{domxref("XMLHttpRequest")}}, но вы можете использовать Fetch.
  • Если вы используете Channel Messaging API для связи с сервис воркером, установите новый канал связи ({{domxref("MessageChannel.MessageChannel()")}}) и отправьте port2 сервис воркеру с помощью вызова {{domxref("Worker.postMessage()")}} для того, чтобы открыть канал связи. Вы так же должны настроить обработчик ответов на сообщения, которые будут отправляться обратно с сервис воркера.
  • На стороне сервера сохраните конечную точку и все остальные необходимые данные, чтобы они были доступны, когда будет необходимо отправить push-сообщение добавленному подписчику (мы используем простой текстовый файл, но вы можете использовать базу данных или все что угодно на ваш вкус). В приложении на продакшене убедитесь, что скрываете эти данные, так что злоумышленники не смогут украсть конечную точку и разослать спам подписчикам в push-сообщениях.
  • @@ -70,7 +70,7 @@ original_slug: Web/API/Push_API/Using_the_Push_API
  • Поверх в сервис воркере настройте обработчик событий push для ответов на полученные push-сообщения.
    1. Если вы хотите отвечать отправкой сообщения канала обратно основному контексту (смотри шаг 6), необходимо сначала получить ссылку на port2, который был отправлен контексту сервис воркера ({{domxref("MessagePort")}}). Это доступно в объекте  {{domxref("MessageEvent")}}, передаваемого обработчику onmessage ({{domxref("ServiceWorkerGlobalScope.onmessage")}}). Конкретнее, он находится в свойстве ports, индекс 0. Когда это сделано, вы можете отправить сообщение обратно port1, используя {{domxref("MessagePort.postMessage()")}}.
    2. -
    3. Если вы хотите ответить запуском системного уведомления, вы можете сделать это, вызвав {{domxref("ServiceWorkerRegistration.showNotification()")}}. Заметьте, что в нашем коде мы вызываем его внутри метода {{domxref("ExtendableEvent.waitUntil()")}} — это растягивает время жизни события, пока уведомление не будет запущено, так что мы можем убедиться, что все, что мы хотели, чтобы произошло, действительно произошло.
    4. +
    5. Если вы хотите ответить запуском системного уведомления, вы можете сделать это, вызвав {{domxref("ServiceWorkerRegistration.showNotification()")}}. Заметьте, что в нашем коде мы вызываем его внутри метода {{domxref("ExtendableEvent.waitUntil()")}} — это продлевает время жизни события до момента запуска уведомления и гарантирует, что метод showNotification будет завершён полностью.
  • @@ -115,11 +115,11 @@ nameInput.value = 'Bob';

    Далее, мы перехватываем ссылку на {{htmlelement("button")}} подписки/отписки и задаём переменные для сохранения ссылок на наши кнопку отправки сообщения/ввода (который создастся только после успешной подписки).

    - Следующие переменные перехватывают ссылки на три основные {{htmlelement("div")}} элемента, так что мы можем включить в них элементы (к примеру, когда появится кнопка Отправки Сообщения Чата или сообщение появится с писке Сообщений).

    + Следующие переменные перехватывают ссылки на три основные {{htmlelement("div")}} элемента, так что мы можем включить в них элементы (к примеру, когда появится кнопка Отправки Сообщения Чата или сообщение появится в списке сообщений).

    -

    Finally we grab references to our name selection form and {{htmlelement("input")}} element, give the input a default value, and use preventDefault() to stop the form submitting when the form is submitted by pressing return.

    +

    Наконец, мы берем ссылки на нашу форму выбора имени и элемент {{htmlelement("input")}}, присваиваем входу значение по умолчанию и используем preventDefault(), чтобы остановить отправку формы, которая будет отправлена нажатием кнопки return.

    -

    Next, we request permission to send web notifications, using {{domxref("Notification.requestPermission","requestPermission()")}}:

    +

    Далее мы запрашиваем разрешение на отправку веб-уведомлений, используя {{domxref("Notification.requestPermission","requestPermission()")}}:

    Notification.requestPermission();
    -- cgit v1.2.3-54-g00ecf