stringtranslate.com

Push-технология

Технология push, также известная как push-уведомление сервера, относится к методу связи в Интернете , при котором первоначальный запрос транзакции инициируется сервером , а не клиентом . Этот подход отличается от более известного метода « вытягивания », при котором передача информации запрашивается получателем или клиентом. [1]

В технологии push клиенты могут выражать свои предпочтения в отношении определенных типов информации или данных, обычно с помощью процесса, известного как модель публикации-подписки . В этой модели клиент «подписывается» на определенные информационные каналы, размещенные на сервере. Когда новый контент становится доступным на этих каналах, сервер автоматически отправляет или «проталкивает» эту информацию подписанному клиенту.

При определенных условиях, таких как ограничительные политики безопасности, блокирующие входящие HTTP- запросы, технология push иногда моделируется с использованием метода, называемого опросом. В этих случаях клиент периодически проверяет наличие новой информации у сервера, а не получает автоматические обновления.

Общее использование

Синхронные конференции и обмен мгновенными сообщениями являются примерами push-сервисов. Сообщения чата, а иногда и файлы, передаются пользователю сразу после их получения службой обмена сообщениями. Как децентрализованные одноранговые программы (такие как WASTE ), так и централизованные программы (такие как IRC или XMPP ) позволяют отправлять файлы, что означает, что отправитель инициирует передачу данных, а не получатель.

Электронная почта также может быть системой push-уведомлений: SMTP — это протокол push-уведомлений (см. Push-рассылка электронной почты ). Однако на последнем этапе — от почтового сервера к настольному компьютеру — обычно используется протокол запроса, такой как POP3 или IMAP . Современные почтовые клиенты делают этот шаг мгновенным, поскольку неоднократно опрашивают почтовый сервер и часто проверяют его на наличие новой почты. Протокол IMAP включает команду IDLE , которая позволяет серверу сообщать клиенту о прибытии новых сообщений. Оригинальный BlackBerry был первым популярным примером push-e-mail в беспроводном контексте. [ нужна цитата ]

Другой пример — сеть PointCast Network , широко освещавшаяся в 1990-е годы. Он поставлял новости и данные фондового рынка в качестве заставки. И Netscape , и Microsoft интегрировали технологию push через Channel Definition Format (CDF) в свое программное обеспечение в разгар войн браузеров , но она никогда не пользовалась большой популярностью. CDF исчез и был удален из браузеров того времени, замененный в 2000-х годах RSS (система извлечения).

Другие варианты использования веб-приложений с поддержкой push-уведомлений включают распространение обновлений программного обеспечения («push-обновления»), распространение рыночных данных (биржевые тикеры), онлайн-чаты/системы обмена сообщениями ( веб-чат ), аукционы, онлайн-ставки и игры, спортивные результаты, консоли мониторинга и мониторинг сенсорной сети .

Примеры

Веб-пуш

Предложение Web push от Internet Engineering Task Force представляет собой простой протокол, использующий HTTP версии 2 для доставки событий в реальном времени, таких как входящие вызовы или сообщения, которые могут быть доставлены (или «отправлены») своевременно. Протокол объединяет все события в реальном времени в один сеанс, что обеспечивает более эффективное использование сетевых и радиоресурсов. Единая служба объединяет все события, распределяя их по приложениям по мере их поступления. Для этого требуется всего один сеанс, что позволяет избежать дублирования накладных расходов. [2]

Веб-уведомления являются частью стандарта W3C и определяют API для уведомлений конечных пользователей. Уведомление позволяет предупреждать пользователя о событии, например о доставке электронного письма, вне контекста веб-страницы. [3] В рамках этого стандарта Push API полностью реализован в Chrome , Firefox и Edge и частично реализован в Safari по состоянию на февраль 2023 года . [4] [5]

HTTP-сервер push

Принудительная передача HTTP-сервера (также известная как потоковая передача HTTP) — это механизм отправки незапрошенных (асинхронных) данных с веб-сервера в веб-браузер . Передача HTTP-сервера может быть достигнута с помощью любого из нескольких механизмов.

API веб-сокетов , являющийся частью HTML5 , позволяет веб-серверу и клиенту взаимодействовать через полнодуплексное TCP-соединение.

Как правило, веб-сервер не разрывает соединение после того, как данные ответа были переданы клиенту. Веб-сервер оставляет соединение открытым, чтобы в случае возникновения события (например, изменения во внутренних данных, о котором необходимо сообщить одному или нескольким клиентам) оно могло быть немедленно отправлено; в противном случае событие придется поставить в очередь до тех пор, пока не будет получен следующий запрос клиента. Большинство веб-серверов предлагают эту функциональность через CGI (например, сценарии без анализа заголовков на HTTP-сервере Apache ). Основополагающим механизмом этого подхода является фрагментированное кодирование передачи .

Другой механизм связан со специальным типом MIMEmultipart/x-mixed-replace под названием , который был представлен Netscape в 1995 году. Веб-браузеры интерпретируют его как документ, который изменяется всякий раз, когда сервер передает клиенту новую версию. [6] Сегодня он по-прежнему поддерживается Firefox , Opera и Safari , но игнорируется Internet Explorer [7] и лишь частично поддерживается Chrome . [8] Его можно применять к HTML- документам, а также для потоковой передачи изображений в приложениях веб-камеры .

Предложение WHATWG Web Applications 1.0 [9] включает механизм передачи контента клиенту. 1 сентября 2006 года веб-браузер Opera реализовал эту новую экспериментальную систему в функции под названием « События, отправленные сервером ». [10] [11] Теперь это часть стандарта HTML5 . [12]

Пушлет

В этом методе сервер использует преимущества постоянных HTTP-соединений , оставляя ответ постоянно «открытым» (т. е. сервер никогда не завершает ответ), эффективно обманывая браузер, заставляя его оставаться в режиме «загрузки» после того, как можно считать начальную загрузку страницы. полный. Затем сервер периодически отправляет фрагменты JavaScript для обновления содержимого страницы, тем самым обеспечивая возможность push-уведомлений. Используя этот метод, клиенту не нужны апплеты Java или другие плагины, чтобы поддерживать открытое соединение с сервером; клиент автоматически уведомляется о новых событиях, отправляемых сервером. [13] [14] Однако одним из серьезных недостатков этого метода является отсутствие контроля сервера над тайм-аутом браузера; обновление страницы всегда необходимо, если на стороне браузера происходит тайм-аут.

Длинный опрос

Длительный опрос сам по себе не является настоящим толчком; длинный опрос — это разновидность традиционного метода опроса, но он позволяет эмулировать механизм push-уведомлений в обстоятельствах, когда реальный push-уведомление невозможен, например, на сайтах с политиками безопасности, которые требуют отклонения входящих HTTP-запросов.

При длительном опросе клиент запрашивает дополнительную информацию от сервера точно так же, как при обычном опросе, но с ожиданием, что сервер может ответить не сразу. Если на момент получения опроса у сервера нет новой информации для клиента, то вместо отправки пустого ответа сервер оставляет запрос открытым и ждет, пока информация об ответе станет доступной. Как только у него появляется новая информация, сервер немедленно отправляет клиенту HTTP-ответ, завершая открытый HTTP-запрос. Получив ответ сервера, клиент часто сразу же отправляет другой запрос серверу. Таким образом, устраняется обычная задержка ответа (время между тем, когда информация впервые становится доступной, и следующим клиентским запросом), которая в противном случае связана с опросом клиентов. [15]

Например, BOSH — это популярный и долгоживущий метод HTTP, используемый в качестве альтернативы непрерывному TCP-соединению с длительным опросом, когда такое соединение трудно или невозможно использовать напрямую (например, в веб-браузере); [16] это также базовая технология XMPP , которую Apple использует для поддержки push-уведомлений iCloud.

Реле сокетов Flash XML

Этот метод, используемый приложениями чата , использует объект XML Socket в однопиксельном фильме Adobe Flash . Под управлением JavaScript клиент устанавливает TCP-соединение с однонаправленным ретранслятором на сервере. Сервер ретрансляции ничего не читает из этого сокета ; вместо этого он немедленно отправляет клиенту уникальный идентификатор . Далее клиент отправляет HTTP-запрос веб-серверу, включая в него этот идентификатор. Затем веб-приложение может отправлять сообщения, адресованные клиенту, на локальный интерфейс сервера ретрансляции, который передает их через сокет Flash. Преимущество этого подхода заключается в том, что он учитывает естественную асимметрию чтения и записи, типичную для многих веб-приложений, включая чат, и, как следствие, обеспечивает высокую эффективность. Поскольку он не принимает данные об исходящих сокетах, серверу ретрансляции вообще не нужно опрашивать исходящие TCP-соединения , что позволяет удерживать открытыми десятки тысяч одновременных соединений. В этой модели пределом масштабирования является стек TCP базовой серверной операционной системы.

Надежная групповая доставка данных (RGDD)

В таких сервисах, как Cloud Computing , для повышения надежности и доступности данных их обычно переносят (реплицируют) на несколько машин. Например, распределенная файловая система Hadoop (HDFS) создает две дополнительные копии любого хранимого объекта. RGDD фокусируется на эффективной передаче объекта из одного места во многие, сохраняя при этом полосу пропускания за счет отправки минимального количества копий (в лучшем случае только одной) объекта по любому каналу в сети. Например, Datacast [17] — это схема доставки на множество узлов внутри центров обработки данных, основанная на регулярных и структурированных топологиях, а DCCast [18] — аналогичный подход для доставки между центрами обработки данных.

Отправить уведомление

Push-уведомление — это сообщение, которое «пересылается» с внутреннего сервера или приложения на пользовательский интерфейс, например мобильные приложения [19] или настольные приложения. Apple представила push-уведомления для iPhone в 2009 году, [20] а в 2010 году Google выпустила «Google Cloud to Device Messaging» (заменённый Google Cloud Messaging , а затем Firebase Cloud Messaging ). [21] В ноябре 2015 года Microsoft объявила, что служба уведомлений Windows будет расширена за счет использования архитектуры универсальной платформы Windows, что позволит отправлять push-данные на Windows 10 , Windows 10 Mobile , Xbox и другие поддерживаемые платформы с использованием универсальной платформы. Вызовы API и запросы POST. [22]

Push-уведомления в основном делятся на два подхода: локальные уведомления и удаленные уведомления. [23] Для локальных уведомлений приложение планирует отправку уведомлений с помощью ОС локального устройства. Для удаленных уведомлений приложение устанавливает таймер в самом приложении при условии, что оно может непрерывно работать в фоновом режиме. При достижении запланированного времени события или выполнении запрограммированного условия события сообщение отображается в пользовательском интерфейсе приложения.

Удаленные уведомления обрабатываются удаленным сервером. В этом сценарии клиентское приложение необходимо зарегистрировать на сервере с уникальным ключом (например, UUID ). Затем сервер отправляет сообщение по уникальному ключу, чтобы доставить его клиенту через согласованный протокол клиент/сервер, такой как HTTP или XMPP , и клиент отображает полученное сообщение. Когда приходит push-уведомление, оно может передавать короткие уведомления и сообщения, устанавливать значки на значках приложений, мигать или постоянно зажигать светодиодный индикатор уведомлений или воспроизводить звуковые сигналы, чтобы привлечь внимание пользователя. [24] Push-уведомления обычно используются приложениями для доведения информации до сведения пользователей. Содержание сообщений можно разделить на следующие примеры категорий:

Push-уведомления в режиме реального времени могут вызвать проблемы с конфиденциальностью, поскольку их можно использовать для привязки виртуальных личностей псевдонимов социальных сетей к реальным личностям владельцев смартфонов. [26] Использование ненужных push-уведомлений в рекламных целях подверглось критике как пример кражи внимания . [27]

Смотрите также

Рекомендации

  1. ^ «Толкающая технология». Техопедия . 18 ноября 2012 г. Проверено 23 июля 2023 г.
  2. М. Томсон, Э. Дамаджио и Б. Рэймор (22 октября 2016 г.). «Общая доставка событий с использованием HTTP Push». Интернет-проект . Рабочая группа по интернет-инжинирингу . Проверено 28 октября 2016 г.
  3. ^ «Веб-уведомления».
  4. ^ «API Web Push».
  5. ^ «Push API — Веб-API | MDN» . http://developer.mozilla.org . 22 февраля 2023 г. Проверено 16 мая 2023 г.
  6. ^ CGI-программирование в World Wide Web, книга О'Рейли, объясняющая, как использовать Netscape server-push.
  7. ^ Документы, отправляемые сервером (HTML и XHTML: Полное руководство). Архивировано 17 апреля 2008 г. в книге Wayback Machine O'Reilly, объясняющей отправку сервером.
  8. ^ Удалена поддержка основных ресурсов multipart/x-mixed-replace.
  9. ^ «Спецификация веб-приложений 1.0» .
  10. ^ «Потоковая передача событий в веб-браузеры». 01 сентября 2006 г. Проверено 23 марта 2007 г.
  11. ^ «Opera лидирует среди браузеров благодаря поддержке AJAX: более эффективная потоковая передача» . 01 сентября 2006 г. Архивировано из оригинала 18 марта 2007 г. Проверено 23 марта 2007 г.
  12. ^ «Стандарт HTML – события, отправленные сервером» . html.spec.whatwg.org . 31 марта 2022 г. Проверено 1 апреля 2022 г.
  13. ^ Введение в пушлеты
  14. Ван Ден Броке, Just (1 марта 2000 г.). «Пушлеты: отправка событий из сервлетов в клиентские браузеры DHTML». JavaWorld . Проверено 13 июля 2020 г.
  15. ^ Сен-Андре, Питер; Лорето, Сальваторе; Сальсано, Стефано; Уилкинс, Грег (апрель 2011 г.). «RFC6202 — известные проблемы и рекомендации по использованию длительного опроса и потоковой передачи в двунаправленном HTTP». дои : 10.17487/RFC6202 . Проверено 14 мая 2016 г. {{cite journal}}: Требуется цитировать журнал |journal=( помощь )
  16. ^ «XEP-0124: Двунаправленные потоки через синхронный HTTP (BOSH)» . Проверено 26 июня 2012 г.
  17. ^ К. Го; и другие. (1 ноября 2012 г.). «Datacast: масштабируемая и эффективная надежная служба групповой доставки данных для центров обработки данных». Исследования Майкрософт . АКМ . Проверено 6 июня 2017 г.
  18. ^ М. Нурмохаммадпур; и другие. (10 июля 2017 г.). «DCCast: эффективная передача данных из одной точки в другую между центрами обработки данных». УСЕНИКС . Проверено 6 июня 2017 г.
  19. ^ Воллебе, Атилла. (2020). «Принятие потребителями push-уведомлений приложений: систематический обзор влияния частоты». Международный журнал интерактивных мобильных технологий . 14 (13): 36–47. дои : 10.3991/ijim.v14i13.14563 .
  20. ^ «Анонсирован сервис push-уведомлений iPhone для разработчиков» . Engadget . Проверено 18 октября 2016 г.
  21. ^ «Представлена ​​служба Google Cloud Messaging для Android (GCM), которая заменит C2DM Framework» . ИнфоQ . Проверено 18 октября 2016 г.
  22. ^ Михакобс. «Обзор служб push-уведомлений Windows (WNS)» . docs.microsoft.com . Проверено 20 октября 2017 г.
  23. ^ «Подробно о локальных и удаленных уведомлениях» . разработчик.apple.com . Проверено 18 октября 2016 г.
  24. ^ «Push-уведомления Android и iOS - Блог - JatApp» . jatapp.com . Проверено 20 октября 2017 г.
  25. ^ «Как мне настроить мобильные push-уведомления от Facebook? | Справочный центр Facebook | Facebook» . www.facebook.com . Проверено 18 октября 2016 г.
  26. ^ Лорети, Пьерпаоло; Браччиале, Лоренцо; Капони, Альберто (2018). «Пуш-атака: связывание виртуальных и реальных личностей с помощью мобильных push-уведомлений». Будущий Интернет . 10 (2): 13. дои : 10.3390/fi10020013 .
  27. Макфедрис, Пол (22 мая 2014 г.). «Стой, внимание, вор!». IEEE-спектр . Институт инженеров электротехники и электроники . Проверено 9 августа 2021 г.

Внешние ссылки