Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65

Статья опубликована в рамках: LII Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 27 апреля 2017 г.)

Наука: Информационные технологии

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Михайлова М.В., Котин А.Н. ПРЕДСТАВЛЕНИЕ О WEBSOCKET // Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ: сб. ст. по мат. LII междунар. студ. науч.-практ. конф. № 4(51). URL: https://sibac.info/archive/technic/4(51).pdf (дата обращения: 23.09.2021)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

ПРЕДСТАВЛЕНИЕ О WEBSOCKET

Михайлова Мария Владимировна

магистрант первого года обучения, Самарский государственный архитектурно-строительный институт,

Россия, г. Самара

Котин Андрей Николаевич

студент бакалавриата, Самарский государственный архитектурно-строительный институт,

Россия, г. Самара

Научный руководитель Тимофеев Александр Вадимович

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

Россия, г. Самара

Научный руководитель Шаврин Вадим Юрьевич

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

Россия, г. Самара

WebSocket — протокол полнодуплексной связи (может передавать и принимать одновременно) поверх TCP-соединения, предназначенный для обмена сообщениями между браузером и веб-сервером в режиме реального времени.

 

Рисунок 1. Иллюстрация работы WebSocket.

 

WebSocket может быть использован для любого клиентского или серверного приложения. Протокол WebSocket — это независимый протокол, основанный на протоколе TCP. Он делает возможным более тесное взаимодействие между браузером и web-сайтом, способствуя распространению интерактивного содержимого и созданию приложений реального времени.

Для установления соединения WebSocket клиент и сервер используют протокол, похожий на HTTP. Клиент формирует особый HTTP-запрос, на который сервер отвечает определенным образом.

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

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

Некоторые из задач, которые сервер сокетов должен выполнять:

  • составить "словарь" сообщений, иными словами, решить, какие типы сообщений являются допустимыми, а какие нет;
  • содержать список всех текущих подключенных клиентов;
  • выявлять ошибки при отправке сообщений клиентам и прекратить попытки связаться с ними, если кажется, что их больше не существует;
  • обрабатывать все данные в оперативной памяти, т.е. данные, доступ к которым может потребоваться всем клиентам, и делать это надежно и безопасно.

Простой клиент веб-сокетов

С точки зрения веб-страницы функциональность веб-сокетов легко понять и использовать. Первый шаг — это создать объект WebSocket и передать ему URL. Код для этого подобен следующему:

var socket = new WebSocket("ws://localhost/socketServer.php");

Строка URL начинается с текста ws://, который идентифицирует подключение типа веб-сокет. Этот URL указывает файл веб-приложения на сервере.

Стандарт веб-сокетов также поддерживает URL, которые начинаются с текста wss://, что указывает на требование использовать безопасное, зашифрованное подключение (точно так же, как и при запросе веб-страницы указывается URL, начинающийся с https:// вместо http://).

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

Само обстоятельство создания объекта WebSocket понуждает страницу пытаться подключиться к серверу. Дальше надо использовать одно из четырех событий объекта WebSocket: onOpen (при установлении подключения), onError (когда возникает ошибка), onClose (при закрытии подключения) и onMessage (когда страница получает сообщение от сервера):

socket.onopen = connectionOpen;

socket.onmessage = messageReceived;

socket.onerror = errorOccurred;

socket.onopen = connectionClosed;

Например, в случае успешного подключения можно отправить соответствующее подтверждающее сообщение. Такое сообщение доставляется с помощью метода send() объекта WebSocket, которому в качестве параметра передается обычный текст. Далее приведена функция, которая обрабатывает событие onOpen и отправляет сообщение:

function connectionOpen() {

   socket.send("UserName:

");

}

Предположительно, веб-сервер получит это сообщение и даст на него ответ.

События onError и onClose можно использовать для отправки извещений посетителю веб-страницы. Но безоговорочно самым важным является событие onMessage, которое срабатывает при получении новых данных от сервера.

Если веб-страница решит, что вся ее работа выполнена, она может закрыть подключение, используя метод disconnect():

socket.disconnect();

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

Чтобы заставить подключение веб-сокетов работать, выполняется большой объем работы за кулисами. Прежде всего, веб-страница устанавливает связь по обычному стандарту HTTP. Потом это подключение нужно повысить до подключения веб-сокетов, позволяющего свободную двустороннюю связь. На этом этапе возможны проблемы, если между компьютером клиента и веб-сервером находится прокси-сервер (как, например, в типичной корпоративной сети). Прокси-сервер может отказаться сотрудничать и разорвет подключение. Эту проблему можно решить, обнаруживая неудачное подключение (посредством события onError объекта WebSocket) и применяя один из заполнителей (polyfills) для сокетов. Эти заполнители применяют метод опроса, чтобы эмулировать подключение веб-сокетов.

В настоящее время WebSocket поддерживается в следующих браузерах:

  • Google Chrome (начиная с версии 4.0.249.0);
  • Apple Safari (начиная с версии 5.0.7533.16);
  • Mozilla Firefox (начиная с версии 4);
  • Opera (начиная с версии 10.70 9067);
  • Internet Explorer (начиная с версии 10);

В результате исследования надежности используемого протокола выяснилось, что в случае использования прозрачных прокси-серверов возможна подмена кеша передаваемых данных с тем, что пользователи вместо реальных данных будут получать версию данных от злоумышленника. Проблема оказалась достаточно серьёзной для того, чтобы разработчики Firefox и Opera объявили о том, что в будущих версиях их браузеров поддержка веб-сокетов будет по умолчанию отключена вплоть до устранения проблемы небезопасности данного протокола (хотя осталась возможность их включить).

 

Список литературы:

  1. WebSocket. [электронный ресурс] — Режим доступа. — URL: https://ru.wikipedia.org/wiki/WebSocket (дата обращения 14.02.2017).
  2. Wang V, Salim F, Moskovits P. - The Definitive Guide to HTML5 WebSocket. Apress. ISBN 978-1-4302-4740-1.
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом