Перейти к содержимому

Push and Pull в 1С-Битрикс - настройка сервера очередей

Push and Pull - подтема на 14 вопросов из собранных. Почти все они об одном: модуль установлен, а сообщения до браузера не доходят.

Что общего у этих задач

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

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

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

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

С чего начать

Начинают с проверки, поднят ли сервер очередей и виден ли он браузеру. Состояние соединения видно в консоли браузера, а журнал сервера показывает подключения со стороны сайта.

Дальше проверяют доставку простым сообщением самому себе. Отправка события своему пользователю снимает половину вопросов: если оно дошло, дело не в модуле, а в каналах и правах.

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

Решения подтемы

Частые вопросы

Зачем нужен отдельный сервер очередей?

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

Почему после обновления окружения push перестал работать?

Обновление перегенерирует конфигурацию проксирования. Ручные правки в ней теряются, а пункт меню окружения возвращает настройку в рабочий вид.

Можно ли обойтись без сервера очередей?

Только опросом сервера по расписанию из браузера. Это создаёт лишнюю нагрузку и даёт задержку, зато не требует ничего, кроме самого сайта.

Как понять, что соединение установлено?

По состоянию соединения в консоли браузера и по журналу сервера очередей. Отправка сообщения из админки проверяет всю цепочку целиком.

Связанные темы

Первоисточники