// Engineering Log
104 | Революция в реальном времени: Погружение в мир WebSockets и Long Polling
Опубликовано 12.09.2025
// Быстрый маршрут
Эта статья относится к теме Серверы и инфраструктура.
Введение
Современные пользователи ожидают, что веб-приложения будут работать так же быстро и отзывчиво, как и нативные программы. Чаты, котировки на бирже, совместное редактирование документов — все эти сценарии требуют мгновенного обмена данными. В этой статье мы разберем, как работает Long Polling, почему его сменили WebSockets, и как правильно настроить поддержку этих технологий на популярных веб-серверах.
Проблема реального времени и первое решение: Long Polling
HTTP изначально проектировался под модель запрос-ответ: клиент обращается к серверу, сервер отвечает и закрывает соединение. Для динамических приложений это неудобно.
Long Polling
Long Polling стал компромиссным решением:
- Клиент отправляет запрос.
- Сервер ждет появления данных и не отвечает сразу.
- Как только данные есть — сервер отвечает.
- Клиент получает ответ и сразу открывает новое соединение.
Плюсы:
- меньше лишних запросов, чем при обычном polling;
- данные доставляются с минимальной задержкой.
Минусы:
- накладные расходы HTTP (заголовки, сессии);
- масштабируемость страдает при тысячах подключений.
Настоящее двустороннее общение: WebSockets
WebSockets радикально изменили подход. После handshake по HTTP происходит «апгрейд» соединения, которое остается открытым и позволяет серверу и клиенту обмениваться данными в обе стороны.
Ключевые преимущества:
- полнодуплексность — двусторонний обмен без дополнительных запросов;
- одно TCP-соединение — меньше накладных расходов;
- низкая задержка — идеально для чатов, игр, торговых платформ;
- эффективность — передается только полезная нагрузка.
Настройка поддержки WebSockets
Nginx
В конфигурации важно явно пробрасывать заголовки Upgrade и Connection:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
proxy_http_version 1.1;— обязателен для Upgrade.proxy_set_header Upgrade $http_upgrade;— передает протокол.proxy_set_header Connection "upgrade";— позволяет апгрейд.
HAProxy
HAProxy поддерживает WebSockets «из коробки», но важно настроить тайм-ауты:
frontend http_front
bind *:80
default_backend http_back
backend http_back
balance roundrobin
server server1 10.0.0.10:8080 check
timeout tunnel 1h
timeout tunnel 1h;— предотвращает обрывы долгоживущих соединений.
Caddy
Caddy делает всё автоматически. Достаточно базовой конфигурации:
example.com {
reverse_proxy localhost:8080
}
Если нужно больше контроля:
example.com {
reverse_proxy /ws/* localhost:8080 {
header_up -Origin
}
}
Caddy сам обрабатывает Upgrade/Connection, избавляя от ручных правок.
Как это делает сайты удобнее?
- Интерактивность: чат, уведомления и игровые действия происходят мгновенно.
- Снижение нагрузки: нет постоянных запросов → экономия ресурсов.
- Эффективность: приложения становятся отзывчивыми и ближе к «живым».
Заключение
Long Polling стал первым шагом к реальному времени, но сегодня стандартом де-факто являются WebSockets. Понимание принципов их работы и грамотная настройка проксирования на Nginx, HAProxy или Caddy — важный навык современного DevOps-инженера и веб-разработчика.
Ресурсы
// Похожая задача
Если у вас похожая ситуация
Эта статья относится к одной из рабочих тем. Можно продолжить чтение по теме, перейти на главную, чтобы понять, чем я занимаюсь, или сразу открыть услуги.
Тема статьи
Серверы и инфраструктура
VPS, Linux, веб-стек, миграции, хостинг, базы данных и базовая эксплуатация.
Часто с этим приходят
- Перенести сайт или сервис на новый сервер
- Настроить Linux, Nginx, базу данных и бэкапы
- Разобраться, почему всё работает нестабильно
// Следующий шаг
Если вам нужна не только статья, а помощь по этой теме, удобнее сразу перейти в услугу. Главная и подборка материалов остаются рядом.
Открыть услуги// Reviews
Отзывы по теме
Спасибо Михаилу за отзывчивость. Созвонились, объяснил как сделать самому. Обращаюсь уже второй раз, все супер и оперативно.
Спасибо Михаилу за отзывчивость. Созвонились, объяснил как сделать самому. Обращаюсь уже второй раз, все супер и оперативно.
Хочу выразить огромную благодарность специалисту, который настроил мне ЧПУ на OpenCart. Настроить ЧПУ оказалось легко и просто, и я рад, что наконец нашел профессионала, который сделал всё качественно и без лишних сложностей. До этого я сменил четырёх специалистов, и каждый раз возникали проблемы с настройкой, но этот человек справился с задачей идеально.
Хочу выразить огромную благодарность специалисту, который настроил мне ЧПУ на OpenCart. Настроить ЧПУ оказалось легко и просто, и я рад, что наконец нашел профессионала, который сделал всё качественно и без лишних …
Отличная работа, обращаюсь не первый раз, находит решения к сложным задачам. Рекомендую.
Отличная работа, обращаюсь не первый раз, находит решения к сложным задачам. Рекомендую.
Отличная работа! Выполнил поставленную задачу в срок и без ошибок. Было приятно сотрудничать, рекомендую.
Отличная работа! Выполнил поставленную задачу в срок и без ошибок. Было приятно сотрудничать, рекомендую.
Отличный специалист, вник в проблему, разобрался, исправил. Рекомендую.
Отличный специалист, вник в проблему, разобрался, исправил. Рекомендую.
Нужно было решить проблему с SSL сертификатом на сервере, который был выпущен через Ngnix Proxy manager. Михаил уточнил все детали, как у меня все устроено, попросил доступы чтобы оценить реальность решения задачи, т. к. до этого не сталкивался с подобным сервисом. Быстро разобрался и решил мою проблему. Идеальное сотрудничество)
Нужно было решить проблему с SSL сертификатом на сервере, который был выпущен через Ngnix Proxy manager. Михаил уточнил все детали, как у меня все устроено, попросил доступы чтобы оценить реальность решения задачи, т. …
Диагностика Nginx Proxy Manager в docker контейнере и решение проблемы
15.03.2024 · ★ 5/5
// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
// Related