Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Технология push или server push - это стиль связи через Интернет, при котором запрос на данную транзакцию инициируется издателем или центральным сервером . Это контрастирует с pull / get, где запрос на передачу информации инициируется получателем или клиентом .

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

Push иногда эмулируется с помощью метода опроса , особенно в обстоятельствах, когда реальный push невозможен, например, на сайтах с политиками безопасности, которые требуют отклонения входящих запросов HTTP / S.

Общее использование [ править ]

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

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

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

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

Примеры [ править ]

Webpush [ править ]

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

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

Нажатие HTTP-сервера [ править ]

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

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

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

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

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

Пушлет [ править ]

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

Длинный опрос [ править ]

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

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

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

Реле Flash XMLSocket [ править ]

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

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

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

Push-уведомление [ править ]

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

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

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

  • Сообщения чата, например: сообщения из мессенджера Facebook, отправленные другими пользователями. [23]
  • Специальные предложения поставщиков, например: продавец может захотеть рекламировать свои социальные предложения клиентам.
  • Напоминание о событии, например: какое-то приложение может позволить клиенту создать напоминание или предупреждение на определенное время.
  • Изменения тем, на которые оформлена подписка, например: пользователи могут захотеть получать обновления о погоде в их местоположении или, например, отслеживать веб-страницу, чтобы отслеживать изменения.

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

См. Также [ править ]

  • BlazeDS
  • BOSH
  • Формат определения канала
  • Клиент-серверная модель
  • Комета
  • Передача файлов
  • ГранитDS
  • Lightstreamer
  • Уведомляющий светодиод
  • Технология вытягивания
  • Протокол push-доступа
  • Отправить по электронной почте
  • HTTP / 2
  • Службы уведомлений SQL Server
  • Потоковое мультимедиа
  • WebSocket
  • WebSub

Ссылки [ править ]

  1. ^ М. Томсон, Э. Damaggio и Б. Raymor (22 октября, 2016). «Общая доставка событий с использованием HTTP Push» . Интернет-проект . Инженерная группа Интернета . Проверено 28 октября, 2016 .
  2. ^ «Веб-уведомления» .
  3. ^ "Web Push API" .
  4. ^ Программирование CGI во всемирной паутине Книга О'Рейли, объясняющая, как использовать Netscape server-push
  5. ^ Документы Server-Push (HTML и XHTML: The Definitive Guide) Архивировано 17 апреля 2008 г. в книге Wayback Machine О'Рейли, в которой объясняется использование server-push.
  6. ^ Убрать поддержку multipart / x-mixed-replace main resources
  7. ^ "Спецификация веб-приложений 1.0" .
  8. ^ «Трансляция событий в веб-браузеры» . 2006-09-01 . Проверено 23 марта 2007 .
  9. ^ «Opera занимает лидирующие позиции с поддержкой AJAX среди браузеров: более эффективная потоковая передача» . 2006-09-01. Архивировано из оригинала на 2007-03-18 . Проверено 23 марта 2007 .
  10. ^ События, отправленные сервером
  11. ^ Введение в пушлеты
  12. Van Den Broecke, Just (1 марта 2000 г.). «Пушлеты: отправка событий из сервлетов в клиентские браузеры DHTML» . JavaWorld . Проверено 13 июля 2020 .
  13. ^ «RFC6202 - известные проблемы и передовые методы использования длинного опроса и потоковой передачи в двунаправленном HTTP» . Проверено 14 мая 2016 .
  14. ^ "XEP-0124: Двунаправленные потоки через синхронный HTTP (BOSH)" . Проверено 26 июня 2012 .
  15. C. Guo; и другие. (1 ноября 2012 г.). «Datacast: масштабируемая и эффективная надежная служба групповой доставки данных для центров обработки данных» . Microsoft Research . ACM . Проверено 6 июня, 2017 .
  16. ^ М. Ноормохаммадпур; и другие. (10 июля 2017 г.). «DCCast: эффективная передача данных из одной точки в другую между центрами обработки данных» . USENIX . Проверено 6 июня, 2017 .
  17. ^ Wohllebe, Атилла. (2020). «Принятие потребителями push-уведомлений приложений: систематический анализ влияния частоты» . Международный журнал интерактивных мобильных технологий . 14 (13): 36–47. DOI : 10.3991 / ijim.v14i13.14563 .
  18. ^ «Объявлен сервис push-уведомлений iPhone для разработчиков» . Engadget . Проверено 18 октября 2016 .
  19. ^ «Представлен Google Cloud Messaging для Android (GCM), заменяющий C2DM Framework» . InfoQ . Проверено 18 октября 2016 .
  20. ^ mijacobs. «Обзор служб Windows Push Notification Services (WNS)» . docs.microsoft.com . Проверено 20 октября 2017 .
  21. ^ «Подробные сведения о локальных и удаленных уведомлениях» . developer.apple.com . Проверено 18 октября 2016 .
  22. ^ «Push-уведомления для Android и iOS - Блог - JatApp» . jatapp.com . Проверено 20 октября 2017 .
  23. ^ «Как настроить мобильные push-уведомления от Facebook? | Справочный центр Facebook | Facebook» . www.facebook.com . Проверено 18 октября 2016 .
  24. ^ Лорети, Пьерпаоло; Браччиале, Лоренцо; Капони, Альберто (2018). «Push-атака: привязка виртуальных и реальных личностей с помощью мобильных push-уведомлений» . Интернет будущего . 10 (2): 13. DOI : 10,3390 / fi10020013 .

Внешние ссылки [ править ]

  • W3C Push Workshop. Семинар 1997 года, на котором обсуждались технологии push и некоторые их ранние примеры.
  • HTTP Streaming с Ajax Описание HTTP Streaming с веб-сайта Ajax Patterns
  • Рекомендация кандидата на WebSocket API
  • Черновик спецификации событий HTML5, отправляемых сервером