Модуль «Push & Pull» позволяет серверу отправлять данные в браузер пользователя без запроса со стороны клиента (без AJAX-опросов).
Это основа чатов, уведомлений и обновлений канбана в Битрикс24.
Требования
Должен быть установлен и настроен модуль pull и сервер очередей (Bitrix Push server или облачный сервер Битрикс).
Сценарий: Уведомить всех пользователей на странице списка, что добавлен новый элемент.
1. PHP: Отправка уведомления
Для отправки используется метод CPullStack::AddShared (для всех) или CPullStack::AddByUser (для конкретного пользователя).
if (\Bitrix\Main\Loader::includeModule('pull')) {
$tag = 'MY_LIST_UPDATES'; // Тег, на который будут подписаны клиенты
$data = [
'module_id' => 'my.module',
'command' => 'item_added', // Название команды для JS
'params' => [
'ID' => 123,
'NAME' => 'Новый элемент',
'HTML' => '<div>...html код элемента...</div>'
]
];
// Отправляем всем, кто подписан на тег
\CPullWatch::AddToStack($tag, $data);
}2. PHP: Регистрация тега на странице
Чтобы пользователь получил уведомление, он должен «подписаться» на тег при загрузке страницы.
// В component.php или шаблоне
if (\Bitrix\Main\Loader::includeModule('pull')) {
$tag = 'MY_LIST_UPDATES';
\CPullWatch::Add($USER->GetID(), $tag);
}3. JS: Получение уведомления
На клиенте нужно подписаться на события модуля pull.
BX.ready(function() {
// Подключаем библиотеку
BX.PULL.start();
// Подписываемся на события нашего модуля
BX.addCustomEvent("onPullEvent-my.module", function(command, params) {
if (command === 'item_added') {
console.log('Прилетел новый элемент!', params);
// Вставляем HTML в контейнер без перезагрузки
var container = BX('list-container');
if (container) {
container.insertAdjacentHTML('afterbegin', params.HTML);
}
}
});
});Логика работы:
- Пользователь открывает страницу -> PHP регистрирует его в «канале» (тег MY_LIST_UPDATES).
- Кто-то добавляет элемент -> PHP отправляет команду item_added в этот канал.
- Push-сервер мгновенно рассылает команду всем активным браузерам, подписанным на канал.
- JS на клиенте ловит событие и обновляет DOM.
Вывод:
Технология Push & Pull позволяет создавать по-настоящему интерактивные приложения внутри Битрикс, где интерфейс обновляется мгновенно у всех пользователей.
Это сложнее, чем простой AJAX, но дает совершенно другой уровень UX.
Push and Pull, битрикс пуш уведомления, CPullStack::AddShared, отправка уведомлений, push notification, realtime битрикс, CPullWatch.