Блог Горошко Андрея 1C-Битрикс Отправка Push-уведомлений с сервера: Модуль Pull and Push

Отправка Push-уведомлений с сервера: Модуль Pull and Push

Средний рейтинг
Еще нет оценок

Модуль «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);
            }
        }
        
    });
});

Логика работы:

  1. Пользователь открывает страницу -> PHP регистрирует его в «канале» (тег MY_LIST_UPDATES).
  2. Кто-то добавляет элемент -> PHP отправляет команду item_added в этот канал.
  3. Push-сервер мгновенно рассылает команду всем активным браузерам, подписанным на канал.
  4. JS на клиенте ловит событие и обновляет DOM.

Вывод:
Технология Push & Pull позволяет создавать по-настоящему интерактивные приложения внутри Битрикс, где интерфейс обновляется мгновенно у всех пользователей.

Это сложнее, чем простой AJAX, но дает совершенно другой уровень UX.

Push and Pull, битрикс пуш уведомления, CPullStack::AddShared, отправка уведомлений, push notification, realtime битрикс, CPullWatch.

Мой рейтинг:

Добавить комментарий

Related Post

Создание административных интерфейсов: CAdminList и CAdminForm для своих данныхСоздание административных интерфейсов: CAdminList и CAdminForm для своих данных

Средний рейтинг Еще нет оценок Когда вы создаете собственный модуль или сущность, важно предоставить администратору удобный интерфейс для управления этими данными. Битрикс предлагает мощные классы CAdminList и CAdminForm для создания списков и форм, которые

Кросс-платформенные SQL-запросы Возможности Bitrix\Main\DB\SqlHelperКросс-платформенные SQL-запросы Возможности Bitrix\Main\DB\SqlHelper

Средний рейтинг Еще нет оценок Если вы пишете «сырые» SQL-запросы (через $connection->query), вы рискуете привязаться к конкретной базе данных (обычно MySQL). SqlHelper — это абстракция, которая генерирует правильный SQL-синтаксис для текущей активной БД.

Современные компоненты Битрикс: Переходим на class.phpСовременные компоненты Битрикс: Переходим на class.php

Средний рейтинг Еще нет оценок Традиционно вся логика компонента Битрикс размещалась в файле component.php. Это простой и понятный подход, но для сложных компонентов он приводит к «лапше» из кода. Современный стандарт