Научная статья на тему 'ВЗАИМОДЕЙСТВИЕ WEB-СЕРВЕРА И WEB-ПРИЛОЖЕНИЕ ЧЕРЕЗ WEB-SOCKET'

ВЗАИМОДЕЙСТВИЕ WEB-СЕРВЕРА И WEB-ПРИЛОЖЕНИЕ ЧЕРЕЗ WEB-SOCKET Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
190
15
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
web-сервер / JavaScript / web-приложение / протокол передачи данных / web-socket

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Журавлев Н.Е.

В статье рассматривается связь web-сервера на языке JavaScript и web-приложения на языке JavaScript через web-sockets. Приводятся особенности протокола HTTP, акцент сделан на рассмотрение его для веб-приложений в режиме реального времени. Приведены примеры создания связи web-сервера и web-приложения с помощью web-socket.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Журавлев Н.Е.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

INTERACTION BETWEEN A WEB SERVER AND A WEB APPLICATION VIA A WEB SOCKET

The article deals with the connection of a web server in JavaScript and a web application in JavaScript via web-sockets. The features of the HTTP Protocol are given, the emphasis is placed on considering IT for web applications in real time. Examples of creating a connection between a web server and a web application using a web socket are given.

Текст научной работы на тему «ВЗАИМОДЕЙСТВИЕ WEB-СЕРВЕРА И WEB-ПРИЛОЖЕНИЕ ЧЕРЕЗ WEB-SOCKET»

Журавлев Н.Е. студент магистратуры факультет «Информационные системы и технологии» научный руководитель: Тимошина Н. В.

доцент

кафедры информатики и информационных технологий

КГУ им. К.Э. Циолковского Россия, г. Калуга

ВЗАИМОДЕЙСТВИЕ WEB-СЕРВЕРА И WEB-ПРИЛОЖЕНИЕ через

WEB-SOCKET

Аннотация: В статье рассматривается связь web-сервера на языке JavaScript и web-приложения на языке JavaScript через web-sockets. Приводятся особенности протокола HTTP, акцент сделан на рассмотрение его для веб-приложений в режиме реального времени. Приведены примеры создания связи web-сервера и web-приложения с помощью web-socket.

Ключевые слова: web-сервер, JavaScript, web-приложение, протокол передачи данных, web-socket.

Zhuravlev N. E. master's degree student 2nd year, faculty «Information systems and technologies»

scientific director: Timoshina N. V.

associate professor of computer science and information technology

KSU them. K. E. Tsiolkovsky Russia, Kaluga

INTERACTION BETWEEN A WEB SERVER AND A WEB APPLICATION VIA A WEB SOCKET

Annotation: The article deals with the connection of a web server in JavaScript and a web application in JavaScript via web-sockets. The features of the HTTP Protocol are given, the emphasis is placed on considering IT for web applications in real time. Examples of creating a connection between a web server and a web application using a web socket are given.

Key words: web server, JavaScript, web application, data transfer Protocol, web-socket.

Переход к интернету для всех нас теперь является естественным жестом. Мы открываем браузер, направляем его на интересующий нас контент, и через несколько секунд на экране появляется то, что мы хотели! Если мы считаем себя простыми конечными пользователями, все кажется простым и непосредственным, но давайте проанализируем, что происходит,

УДК 004.75

2 курс,

когда через наш браузер отправляет запрос на сайт. Прежде всего, мы должны спросить себя: кто отвечает на наш запрос? Ответ - веб-сервер.

Web-сервер - это, по сути, программа, которая ожидает запросы, размещая, так сказать, «прослушивание» определенных портов и предоставляя клиенту адекватный ответ, в зависимости от параметров запроса.

Или web-сервер - это программное приложение, которое работает на физическом сервере, который прослушивает выделенные порты, для связи с клиентами, которым требуется его содержимое и его службы.

Веб-сервер должен иметь возможность общаться с широким кругом клиентов (ПК, смартфон, Smart TV, планшет и т. Д.) И для этого он должен использовать протоколы, признанные всеми. Основным для просмотра вебстраниц является HTTP (Hyper Text Transfer Protocol).

Каждый раз, когда мы пишем интернет-адрес, наш браузер преобразует его в запрос http и доставляет его на указанный сервер. Затем он получает ответ http и файл HTML, который переводится (называется рендерингом) в виде текста и изображений, чтобы показать его нам на экране.

Опрошенные web-страницы могут быть как статическими, так и динамическими.

Статические страницы пишутся только с помощью HTML-кода, и в них уже содержатся все данные, которые затем будут показаны конечному пользователю.

Динамические страницы, с другой стороны, в дополнение к HTML используют другие языки (JavaScript, ASP и т.д.), Посредством которых определяются инструкции, по которым генерируется содержимое запрашиваемой страницы. В этом случае именно веб-сервер обрабатывает эти инструкции (представленные в форме скрипта), показывая конечному пользователю динамически сгенерированное содержимое с аспектом по умолчанию, установленным программистом. Наличие всей серверной рабочей нагрузки очень удобно для конечного пользователя, которому не нужно устанавливать какое-либо дополнительное программное обеспечение, кроме браузера, и он освобождается от какой-либо обработки с последующей экономией времени и пропускной способности.

Веб-приложение (от английского «веб-приложение) основано на кодах HTML, JavaScript или CSS. Они не нуждаются в установке, так как они загружаются веб-сервером и запускаются в браузере. Вы все еще можете создать ссылку на рабочем столе компьютера или на домашнем экране мобильного устройства, добавив закладку.

Выбор между веб-приложениями очень широк: от небольших инструментов до более популярных программ (таких как службы мгновенных сообщений или пакет Office), графических программ или браузерных игр. Кроме того, многие программы и сервисы предлагаются как в виде веб-приложений, так и в виде нативных приложений.

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

Кроме того, HTTP был разработан как полудуплекс, что означает, что передача данных разрешена только в одном направлении за один раз. Walkie-Talkie - это пример полудуплексного устройства, в котором одновременно может говорить только один человек. Чтобы преодолеть эти недостатки HTTP, разработчики создали некоторые решения или взломы между этим опросом, длинным опросом (комета) и потоковой передачей.

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

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

Прежде чем увидеть практическое использование WebSockets, полезно сначала понять, что они из себя представляют и как они работают.

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

Полнодуплексная система позволяет осуществлять связь в обоих направлениях одновременно, типичным примером такого типа связи является телефонная связь, когда собеседники могут одновременно разговаривать и прослушиваться. Первоначально WebSockets были предложены как часть спецификации HTML5, которая обещает облегчить разработку и повысить эффективность сети для современных интерактивных веб-приложений, но впоследствии была перемещена в отдельный стандартный документ, чтобы спецификация была сосредоточена только на WebSocket. (RFC 6455 и API-интерфейс WebSocket JavaScript).

Если «время доставки пакета» это сколько пакет шел в реальности, то «пинг» это средняя скорость с которой пакет идет туда-обратно. Другими словами пинг можно считать некоей константой конкретного

идеальным временем доставки. В условиях интернета время доставки пакетов не всегда будет идеальным, т.е. не всегда будет равно половине пинга.

Проблема TCP в том, что когда один из пакетов теряется, пришедшие за ним пакеты оседают в буфере сетевого драйвера и не доступны программе до тех пор, пока потерявшийся пакет не будет доставлен повторно. Это явление называется очередью блокировок. Пакет к вам доставлен, но вам не доступен. Это явление реально, оно существует и является проблемой. В случае передачи данных, актуальность которых теряется за время, меньшее пинга, при потере 1 пакета вы автоматически теряете еще несколько благополучно пришедших пакетов.

Для создания связи необходим web-сервер node JS с установленным модулем Express и web-приложение.

На web-сервер необходимо установить модуль socket.io. Socket.IO позволяет работать в режиме реального времени, двунаправленной и событийной связи. Он работает на любой платформе, браузере или устройстве, в равной степени ориентируясь на надежность и скорость.

На web-приложение необходимо установить модуль socket.io-client. Это модуль является клиентской частью модуля socket.io.[1]

Создадим необходимые для дальнейшей работы константы на web-сервере.

const port = 4001

const app = express()

const server = http.createServer(app)

const io = socketIO(server)

Необходимо начать «слушать» сокеты, для этого открывается следующая функция:

io.on('connection', socket => {

Данный участок кода означает, что если получен пакет с title "message", то мы выведем его в консоль.

socket.on('message', (data) => { console.log(data) }

Мы также можем отдавать пакеты обратно, пример приведен в отрезке ниже, если получим пакет с title "auth".

socket.on('auth', (data) => { io.sockets.emit('auth', {name: 'Nikita', old:

22}) }

Функция io.sockets.emit отдаст пакет с title "auth" и объектом из 2 атрибутов name и old.

Проблема в том, что этот пакет получат все, кто находится на сайте. Для избежание этого, создадим «комнаты» где web-сервер сможет общаться с посетителем web-приложения «тет-а-тет». socketjoin(' название комнаты');

Данная функция будет срабатывать каждый раз, когда посетитель зашел в «комнату».

io.to('some room').emit('some event');

Данная функция будет отправлять сообщение «some event» тем, кто в комнате «some room».

Подведя итог можно сказать, что использование WebSocket нужно тогда, когда нужен по-настоящему низкий уровень задержек, приближающийся, при организации связи между клиентом и сервером, к обмену данными в реальном времени. Также важно помнить про очереди событий. WebSockets более эффективны и производительны, чем другие решения, такие как HTTPRequest. Они требуют меньшей пропускной способности и уменьшают задержку. Упрощение архитектур приложений в режиме реального времени. Для отправки сообщений WebSockets не требуется заголовок, что снижает необходимую пропускную способность.

Использованные источники: 1. Socket.io documentation [Электронный ресурс]: Socket. io. / documentation. URL: https://socket.io/docs/. (Дата обращения: 12.12.2019)

i Надоели баннеры? Вы всегда можете отключить рекламу.