- PVSM.RU - https://www.pvsm.ru -
Перевод статьи Джона Мюллера [1] — What Is a WebSockets Push-Styled API and How Does It Work? [2]
Технологии отправки уведомлений от сервера к клиенту (пуш-технологии) должны покрывать различный набор данных и потребностей пользователей. В первой [3] и второй [4] части серии (ссылки на оригинал, прим.) обсуждались методы обеспечения обмена данными между серверами в реальном времени, при которых клиенты получали обновления данных постфактум (не в режиме реального времени, прим.). Однако, иногда требуется отправить данные от сервера к клиенту, в режиме реального времени, и тут пригодятся веб-сокеты (WebSockets). В данной статье обсуждаются возможности веб-сокетов и их отличие от остальных пуш-технологий.
Веб-сокеты позволяют клиенту установить такое соединение с сервером, при котором данные будут приходить при возникновении серверного события (event-driven) в режиме реального времени. В отличие от множества веб-технологий, веб-сокеты не следуют стратегии «Запрос-ответ», при которой соединение открывается для выполнения запроса, и закрывается сразу после его выполнения. Веб-сокеты держат соединение открытым. Следовательно, клиенту не требуется постоянно опрашивать (poll) сервер на предмет наличия обновлений, что значительно ускоряет быстродействие приложения при меньшем расходе ресурсов. Веб-сокет состоит из следующих частей:
Смысл веб-сокета — предоставить альтернативу HTTP-соединению, в виде TCP-соединения. Первоначальный запрос клиента выполняется с помощью HTTP, в котором указывается заголовок для смены (upgrade) протокола, и всё последующее взаимодействие выполняется с помощью протокола веб-сокетов (WS protocol). Другими словами, вместо отправки запроса к http://<чего-нибудь>, происходит отправка к ws://<чего-нибудь>. Данная техника достигает следующих целей:
Также, веб-сокеты превосходят ограничения существующих технологий:
Для использования веб-сокетов требуются совместимые браузеры, в список которых входят также: Chrome, Edge, Firefox, Internet Explorer, Opera, и Safari (см. caniuse [7], прим. переводчика). Потребность в совместимом браузере ограничивает пользу от веб-сокетов (однако, это ограничение незначительно пока нет необходимости в поддержке большого количества пользователей со старыми браузерами).
Хоть и данная статья рассказывает, в основном, о взаимодействии браузера с сервером через веб-сокеты, есть также возможность веб-сокетного взаимодействия между серверами; клиенты для веб-сокета доступны для большинства основных серверных платформ: Node.js [8], PHP [9], Python [10], Ruby [11], .NET [12], и Java [13].
Автор: диванный аналитик
Источник [14]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/setevy-e-tehnologii/281390
Ссылки в тексте:
[1] Джона Мюллера: https://www.programmableweb.com/profile/johnjohnmuellerbookscom
[2] What Is a WebSockets Push-Styled API and How Does It Work?: https://www.programmableweb.com/news/what-websockets-push-styled-api-and-how-does-it-work/analysis/2017/04/20
[3] первой: https://www.programmableweb.com/news/what-webhooks-push-styled-api-and-how-does-it-work/analysis/2017/03/28
[4] второй: https://www.programmableweb.com/news/what-pubsubhubbub-push-styled-api-and-how-does-it-work/analysis/2017/04/03
[5] дуплекс-канал: https://ru.wikipedia.org/wiki/%D0%94%D1%83%D0%BF%D0%BB%D0%B5%D0%BA%D1%81_(%D1%82%D0%B5%D0%BB%D0%B5%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8)
[6] полу-дуплекс: https://ru.wikipedia.org/wiki/%D0%94%D1%83%D0%BF%D0%BB%D0%B5%D0%BA%D1%81_(%D1%82%D0%B5%D0%BB%D0%B5%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8)#%D0%9F%D0%BE%D0%BB%D1%83%D0%B4%D1%83%D0%BF%D0%BB%D0%B5%D0%BA%D1%81%D0%BD%D1%8B%D0%B9_%D1%80%D0%B5%D0%B6%D0%B8%D0%BC
[7] caniuse: https://caniuse.com/#feat=websockets
[8] Node.js: http://codular.com/node-web-sockets
[9] PHP: http://www.phpbuilder.com/articles/application-architecture/optimization/creating-real-time-applications-with-php-and-websockets.html
[10] Python: https://www.fullstackpython.com/websockets.html
[11] Ruby: http://blog.honeybadger.io/building-a-simple-websockets-server-from-scratch-in-ruby/
[12] .NET: http://www.codemag.com/article/1210051
[13] Java: http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/HomeWebsocket/WebsocketHome.html
[14] Источник: http://habrahabr.ru/sandbox/115814/
Нажмите здесь для печати.