Когда в Битрикс24 не приходят уведомления о новых задачах, сообщениях или изменениях статусов заказов — почти всегда виноват неправильно настроенный Push & Pull сервер?
Без него система использует Long Polling, что даёт задержки в 30+ секунд и создаёт лишнюю нагрузку на сервер. Мы берём на себя полную настройку этого компонента: от установки Node.js до интеграции с модулем pull и проверки WebSocket-соединений. Свяжитесь с нами для бесплатной оценки проекта.
Как работает Push & Pull: архитектура и компоненты
Push-сервер — отдельный процесс на Node.js, который держит постоянные WebSocket-соединения с браузерами пользователей. PHP-бэкенд отправляет сообщения на Push-сервер через HTTP, а тот транслирует их всем подключённым клиентам. Компоненты:
| Компонент | Назначение |
|---|---|
| Node.js (Push-сервер) | Управление WebSocket-соединениями и рассылка уведомлений |
Модуль push.sender (PHP) |
API для отправки push-сообщений из Битрикс |
Модуль pull (JS) |
Клиентская подписка на уведомления в браузере |
Почему WebSocket лучше Long Polling?
WebSocket обеспечивает двустороннюю связь в реальном времени без постоянных HTTP-запросов. В тестах он в 2–3 раза быстрее Long Polling по скорости доставки и снижает нагрузку на CPU до 60%. Для интернет-магазинов это критично: уведомление о смене статуса заказа приходит мгновенно, а не через 30 секунд. При 5000 одновременных подключений WebSocket использует на 60% меньше памяти, чем Long Polling, что существенно экономит ресурсы сервера. Согласно документации Bitrix, внедрение WebSocket (вебсокеты) в Битрикс позволяет сократить расходы на серверную инфраструктуру до 30%.
Как настроить Push-сервер за час?
Установка Node.js LTS и пакета bitrix-push-server занимает не более 15 минут. Конфигурация — ещё 10 минут, настройка nginx — 5 минут. Остальное время уходит на интеграцию с Битрикс и тестирование. В сложных случаях (например, кластеризация) процесс может занять до 3 дней.
Установка Node.js (LTS)
Используйте официальный NodeSource-репозиторий для LTS-версии:
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt-get install -y nodejs
node --version # v20.x.x
npm --version
Конфигурация Push-сервера
Установите пакет Bitrix Push Server через npm или скачайте с marketplace.1c-bitrix.ru. Пример конфигурационного файла /etc/bitrix/push-server.json:
{
"security": {
"key": "SECRET_KEY_HERE"
},
"server": {
"port": 8893,
"hostname": "0.0.0.0"
},
"serverHTTPS": {
"port": 8894,
"hostname": "0.0.0.0",
"key": "/etc/ssl/private/site.key",
"cert": "/etc/ssl/certs/site.crt"
},
"log": {
"level": "info",
"file": "/var/log/bitrix-push-server.log"
}
}
SECRET_KEY_HERE — длинная случайная строка. Этот же ключ укажите в настройках модуля Push в Битрикс.
Настройка nginx для проксирования WebSocket
Push-сервер слушает порты 8893 (HTTP) и 8894 (HTTPS). Добавьте в конфигурацию nginx:
location /bitrix/subws/ {
proxy_pass http://127.0.0.1:8893/bitrix/subws/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_read_timeout 3600;
proxy_send_timeout 3600;
}
location /bitrix/sub/ {
proxy_pass http://127.0.0.1:8893/bitrix/sub/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_read_timeout 3600;
}
location /bitrix/rest/ {
proxy_pass http://127.0.0.1:8893/bitrix/rest/;
proxy_set_header Host $host;
}
Интеграция с модулем pull в Битрикс
В административном интерфейсе: Настройки → Настройки продукта → Настройки модулей → Push и Pull. Укажите:
- Публичный путь —
https://yoursite.ru/bitrix/ - Приватный путь —
http://127.0.0.1:8893/bitrix/ - Ключ подписи — тот же
SECRET_KEY_HERE
После сохранения проверьте в браузере (DevTools → Network) — должны появиться WebSocket-соединения к /bitrix/subws/.
Автозапуск через systemd
Создайте /etc/systemd/system/bitrix-push.service:
[Unit]
Description=Bitrix Push Server
After=network.target
[Service]
Type=simple
User=www-data
ExecStart=/usr/bin/bitrix-push-server --config /etc/bitrix/push-server.json
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Запустите: systemctl enable bitrix-push && systemctl start bitrix-push.
Что входит в настройку под ключ?
- Аудит текущей конфигурации сервера и Битрикс
- Установка Node.js LTS и пакета bitrix-push-server
- Создание конфигурационного файла с уникальным ключом безопасности
- Настройка nginx для проксирования WebSocket (HTTP и HTTPS)
- Интеграция модуля
pullв админке Битрикс - Настройка автозапуска через systemd
- Тестирование WebSocket-соединений и уведомлений
- Передача документации и доступов
Типичные ошибки при настройке Push-сервера
- Несовпадение ключа безопасности в конфиге и настройках Битрикс
- Блокировка портов 8893/8894 файрволом
- Отсутствие модуля
mod_proxy_wstunnelв nginx - Неправильный публичный путь (должен заканчиваться на
/bitrix/) - Использование устаревшей версии Node.js (ниже 18)
Сравнение WebSocket и Long Polling
| Параметр | WebSocket | Long Polling |
|---|---|---|
| Задержка доставки | 100–500 мс | 20–30 сек |
| Нагрузка на CPU | Низкая | Высокая (постоянные HTTP-запросы) |
| Расход памяти на 5000 соединений | ~200 МБ | ~500 МБ |
| Сложность настройки | Средняя (требует nginx) | Низкая (работает из коробки) |
Процесс работы
- Анализ — изучаем текущую архитектуру и нагрузку.
- Проектирование — определяем оптимальную конфигурацию (порты, ключи, nginx).
- Развёртывание — устанавливаем и настраиваем Push-сервер.
- Тестирование — проверяем all real-time сценарии (чаты, уведомления, корзина).
- Документирование — передаём итоговые конфиги и инструкции.
Ориентировочные сроки и стоимость
Настройка занимает от 1 до 3 рабочих дней в зависимости от сложности инфраструктуры. Стоимость настройки — от 15 000 до 60 000 ₽ в зависимости от объёма работ. Экономия на инфраструктуре — до 30 000 ₽ в месяц при переходе на WebSocket вместо Long Polling. В стоимость входит гарантия работоспособности в течение 14 дней после сдачи. Опыт нашей команды — более 5 лет настройки Битрикс и 30+ успешных проектов.
Подробнее о технологии WebSocket можно прочитать на Wikipedia.
Закажите настройку Push-сервера под ключ — получите консультацию и оценку проекта бесплатно.







