Push-технология
Технология Push, также известная как серверная Push, относится к методу связи, при котором связь инициируется сервером, а не клиентом. Этот подход отличается от метода « вытягивания », при котором связь инициируется клиентом. [1]
В технологии push клиенты могут выражать свои предпочтения в отношении определенных типов информации или данных, обычно с помощью процесса, известного как модель публикации-подписки . В этой модели клиент «подписывается» на определенные информационные каналы, размещенные на сервере. Когда новый контент становится доступным на этих каналах, сервер автоматически отправляет или «проталкивает» эту информацию подписанному клиенту.
При определенных условиях, таких как ограничительные политики безопасности, блокирующие входящие HTTP- запросы, технология push иногда моделируется с использованием метода, называемого опросом. В этих случаях клиент периодически проверяет наличие новой информации у сервера, а не получает автоматические обновления.
Общее использование [ править ]
Синхронные конференции и обмен мгновенными сообщениями являются примерами push-сервисов. Сообщения чата, а иногда и файлы, передаются пользователю сразу после их получения службой обмена сообщениями. Как децентрализованные одноранговые программы (такие как WASTE ), так и централизованные программы (такие как IRC или XMPP ) позволяют отправлять файлы, что означает, что отправитель инициирует передачу данных, а не получатель.
Электронная почта также может быть системой push-уведомлений: SMTP — это протокол push-уведомлений (см. Push-рассылка электронной почты ). Однако на последнем этапе — от почтового сервера к настольному компьютеру — обычно используется протокол запроса, такой как POP3 или IMAP . Современные почтовые клиенты делают этот шаг мгновенным, поскольку неоднократно опрашивают почтовый сервер и часто проверяют его на наличие новой почты. Протокол IMAP включает команду IDLE , которая позволяет серверу сообщать клиенту о прибытии новых сообщений. Оригинальный BlackBerry был первым популярным примером push-e-mail в беспроводном контексте. [ нужна ссылка ]
Другой пример — сеть PointCast , широко освещавшаяся в 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 г. [update]. [4] [5]
HTTP-сервер push [ править ]
Принудительная передача HTTP-сервера (также известная как потоковая передача HTTP) — это механизм отправки незапрошенных (асинхронных) данных с веб-сервера в веб-браузер . Передача HTTP-сервера может быть достигнута с помощью любого из нескольких механизмов.
являющийся частью HTML5, API веб-сокетов, позволяет веб-серверу и клиенту взаимодействовать через полнодуплексное TCP-соединение.
Как правило, веб-сервер не разрывает соединение после того, как данные ответа были переданы клиенту. Веб-сервер оставляет соединение открытым, чтобы в случае возникновения события (например, изменения во внутренних данных, о котором необходимо сообщить одному или нескольким клиентам) оно могло быть немедленно отправлено; в противном случае событие придется поставить в очередь до тех пор, пока не будет получен следующий запрос клиента. Большинство веб-серверов предлагают эту функциональность через CGI (например, сценарии без анализа заголовков на HTTP-сервере Apache ). Основополагающим механизмом этого подхода является фрагментированное кодирование передачи .
Другой механизм связан со специальным типом MIME, называемым multipart/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 Socket [ править ]
Этот метод, используемый приложениями чата , использует объект XML Socket в однопиксельном фильме Adobe Flash . Под управлением JavaScript клиент устанавливает TCP-соединение с однонаправленным ретранслятором на сервере. Сервер ретрансляции ничего не читает из этого сокета ; вместо этого он немедленно отправляет клиенту уникальный идентификатор . Далее клиент отправляет HTTP-запрос веб-серверу, включая в него этот идентификатор. Затем веб-приложение может отправлять сообщения, адресованные клиенту, на локальный интерфейс сервера ретрансляции, который ретранслирует их через сокет Flash. Преимущество этого подхода заключается в том, что он учитывает естественную асимметрию чтения и записи, типичную для многих веб-приложений, включая чат, и, как следствие, обеспечивает высокую эффективность. не нужно опрашивать исходящие TCP-соединения Поскольку он не принимает данные об исходящих сокетах, серверу ретрансляции вообще , что позволяет удерживать открытыми десятки тысяч одновременных соединений. В этой модели пределом масштабирования является стек TCP базовой операционной системы сервера.
групповая доставка данных ( RGDD ) Надежная
В таких сервисах, как Cloud Computing , для повышения надежности и доступности данных их обычно переносят (реплицируют) на несколько машин. Например, распределенная файловая система Hadoop (HDFS) создает две дополнительные копии любого хранимого объекта. RGDD фокусируется на эффективной передаче объекта из одного места во многие, сохраняя при этом пропускную способность за счет отправки минимального количества копий (в лучшем случае только одной) объекта по любому каналу в сети. Например, передача данных [17] — это схема доставки на множество узлов внутри центров обработки данных, основанная на регулярных и структурированных топологиях и DCCast. [18] аналогичный подход для доставки в центры обработки данных.
Push-уведомление [ править ]
Push-уведомление — это сообщение, которое «пересылается» с внутреннего сервера или приложения на пользовательский интерфейс, например мобильные приложения. [19] или настольные приложения. Apple представила push-уведомления для iPhone в 2009 году. [20] а в 2010 году Google выпустила «Обмен сообщениями Google Cloud to Device» (замененный 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-уведомления обычно используются приложениями для доведения информации до сведения пользователей. Содержание сообщений можно разделить на следующие примеры категорий:
- Сообщения чата из приложения для обмена сообщениями, например Facebook Messenger, отправленные другими пользователями. [25]
- Специальные предложения для поставщиков. Поставщик может рекламировать свои предложения клиентам.
- Напоминания о событиях. Некоторые приложения могут позволять клиенту создавать напоминания или оповещения на определенное время.
- Изменения тем по подписке: пользователи могут захотеть получать обновления о погоде в своем регионе или, например, отслеживать веб-страницу, чтобы отслеживать изменения.
Push-уведомления в режиме реального времени могут вызвать проблемы с конфиденциальностью, поскольку их можно использовать для привязки виртуальных личностей псевдонимов социальных сетей к реальным личностям владельцев смартфонов. [26] Использование ненужных push-уведомлений в рекламных целях подверглось критике как пример кражи внимания . [27]
См. также [ править ]
- БлейзДС
- БОШ (протокол)
- Формат определения канала
- Модель клиент-сервер
- Комета (программирование)
- Передача файлов
- ГранитДС
- HTTP/2
- Светостример
- Индикатор уведомлений
- Технология вытягивания
- Протокол push-доступа
- Отправить электронное письмо
- Службы уведомлений SQL Server
- Потоковое мультимедиа
- Вебсокет
- Веб-суб
Ссылки [ править ]
- ^ «Пуш-технологии» . Техопедия . 18 ноября 2012 г. Проверено 23 июля 2023 г.
- ^ М. Томсон, Э. Дамаджио и Б. Рэймор (22 октября 2016 г.). «Общая доставка событий с использованием HTTP Push» . Интернет-проект . Рабочая группа по интернет-инжинирингу . Проверено 28 октября 2016 г.
- ^ «Стандарт API уведомлений» . Notifications.spec.whatwg.org . Проверено 30 апреля 2024 г.
- ^ «Push API» . Проверено 30 апреля 2024 г.
- ^ «Push API — Веб-API | MDN» . http://developer.mozilla.org . 22 февраля 2023 г. Проверено 16 мая 2023 г.
- ^ CGI-программирование в World Wide Web, книга О'Рейли, объясняющая, как использовать Netscape server-push.
- ^ Документы, отправляемые сервером (HTML и XHTML: Полное руководство). Архивировано 17 апреля 2008 г. в книге Wayback Machine O'Reilly, объясняющей отправку сервером.
- ^ Удалена поддержка основных ресурсов multipart/x-mixed-replace.
- ^ «Спецификация веб-приложений 1.0» .
- ^ «Потоковая передача событий в веб-браузеры» . 01 сентября 2006 г. Проверено 23 марта 2007 г.
- ^ «Opera лидирует среди браузеров благодаря поддержке AJAX: более эффективная потоковая передача» . 01 сентября 2006 г. Архивировано из оригинала 18 марта 2007 г. Проверено 23 марта 2007 г.
- ^ «Стандарт HTML – события, отправленные сервером» . html.spec.whatwg.org . 31 марта 2022 г. Проверено 1 апреля 2022 г.
- ^ «Пушлеты-знакомство» . Архивировано из оригинала 5 августа 2009 г. Проверено 5 июня 2008 г.
- ^ Ван ден Броке, Just (1 марта 2000 г.). «Пушлеты: отправка событий из сервлетов в клиентские браузеры DHTML» . JavaWorld . Проверено 13 июля 2020 г.
- ^ Сен-Андре, Питер; Лорето, Сальваторе; Сальсано, Стефано; Уилкинс, Грег (апрель 2011 г.). «RFC6202 — известные проблемы и рекомендации по использованию длительного опроса и потоковой передачи в двунаправленном HTTP» . www.tools.ietf.org . дои : 10.17487/RFC6202 . Проверено 14 мая 2016 г.
- ^ «XEP-0124: Двунаправленные потоки через синхронный HTTP (BOSH)» . Проверено 26 июня 2012 г.
- ^ Ц. Го; и др. (1 ноября 2012 г.). «Datacast: масштабируемая и эффективная надежная служба групповой доставки данных для центров обработки данных» . Исследования Майкрософт . АКМ . Проверено 6 июня 2017 г.
- ^ М. Нурмохаммадпур; и др. (10 июля 2017 г.). «DCCast: эффективная передача данных между точками и несколькими точками между центрами обработки данных» . УСЕНИКС . Проверено 6 июня 2017 г.
- ^ Воллербе, Атилла. (2020). «Принятие потребителями push-уведомлений приложений: систематический обзор влияния частоты» . Международный журнал интерактивных мобильных технологий . 14 (13): 36–47. дои : 10.3991/ijim.v14i13.14563 .
- ^ «Анонсирован сервис push-уведомлений iPhone для разработчиков» . Engadget . Проверено 18 октября 2016 г.
- ^ «Представлена служба Google Cloud Messaging для Android (GCM), которая заменит C2DM Framework» . ИнфоQ . Проверено 18 октября 2016 г.
- ^ миджакобы. «Обзор служб push-уведомлений Windows (WNS)» . docs.microsoft.com . Проверено 20 октября 2017 г.
- ^ «Подробно о локальных и удаленных уведомлениях» . разработчик.apple.com . Проверено 18 октября 2016 г.
- ^ «Push-уведомления Android и iOS – Блог – JatApp» . jatapp.com . Проверено 20 октября 2017 г.
- ^ «Как мне настроить мобильные push-уведомления от Facebook? | Справочный центр Facebook | Facebook» . www.facebook.com . Проверено 18 октября 2016 г.
- ^ Лорети, Пьерпаоло; Браччиале, Лоренцо; Капони, Альберто (2018). «Пуш-атака: связывание виртуальных и реальных личностей с помощью мобильных push-уведомлений» . Будущий Интернет . 10 (2): 13. дои : 10.3390/fi10020013 .
- ^ Макфедрис, Пол (22 мая 2014 г.). «Стой, внимание, вор!» . IEEE-спектр . Институт инженеров электротехники и электроники . Проверено 9 августа 2021 г.
Внешние ссылки [ править ]
- Семинар W3C Push. Семинар 1997 года, на котором обсуждалась технология push и некоторые ее ранние примеры.
- Потоковая передача HTTP с помощью Ajax. Описание потоковой передачи HTTP с веб-сайта Ajax Patterns.
- Web Socket API Рекомендация-кандидат
- событий, отправляемых сервером HTML5 Предварительная спецификация