Найти тему
106 подписчиков

⬅️ Использование WebSocket с Python


Что такое WebSocket?

Обычно для обмена данными в интернете используется протокол передачи гипертекста (HTTP, HyperText Transfer Protocol). Он работает по алгоритму запрос/ответ. Когда веб-браузеру нужны данные с веб-сервера, он выполняет запрос, на который веб-сервер возвращает данные через ответ: изображение 1.

☝️Чтобы поддерживать актуальную версию веб-страницы, браузеру необходимо достаточно часто выполнять запросы для получения данных с веб-сервера.
Этот процесс называется опросом (polling). Если данные нужно обновлять постоянно, он становится чрезмерно затратным, поскольку и клиент, и сервер постоянно выполняют запросы и ответы. С другой стороны, постоянный опрос бесполезен, если данные на сервере меняются редко (или нерегулярно). Но если уменьшить частоту опроса, браузер может пропустить важные обновления данных.

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

Алгоритм работы WebSoket показан на изображении 2.

▪Сначала веб-браузер инициирует запрос к веб-серверу, отправляя HTTP-заголовок “can we upgrade to websocket”.
▪Если веб-сервер поддерживает WebSocket, он возвращает ответ с заголовком “OK to upgrade to websocket”.
▪Затем устанавливается долговременное двунаправленное соединение с сокетом.
▪И клиент, и сервер смогут обмениваться данными, используя это сокет-соединение.

С WEBSOCKET ТАКЖЕ МОЖНО ИСПОЛЬЗОВАТЬ ДЛЯ ПОДКЛЮЧЕНИЯ К СОКЕТАМ ПОРТЫ 80 (HTTP) И 443 (HTTPS). ЭТО ПОЗВОЛЯЕТ РАБОТАТЬ С WEBSOCKET ДАЖЕ ЧЕРЕЗ ПРОКСИ-СЕРВЕР И БРАНДМАУЭР.

Создание сервера WebSocket


⬅️ Использование WebSocket с Python  Что такое WebSocket?  Обычно для обмена данными в интернете используется протокол передачи гипертекста (HTTP, HyperText Transfer Protocol).
1 минута