Настройка и использование модуля AWZ: Push and Pull [awz.pull]

Пример настройки nginx

location ~* ^/ws/ {
    rewrite ^/ws/(.*)$ /bitrix/subws/$1 break;
    #access_log  /var/log/nginx/post.log  logpost;
    access_log off;
    proxy_pass http://nodejs_sub;
    # http://blog.martinfjordvald.com/2013/02/websockets-in-nginx/
    # 12h+0.5
    proxy_max_temp_file_size 0;
    proxy_read_timeout 43800;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $replace_upgrade;
    proxy_set_header Connection $connection_upgrade;
}

location ~* ^/pub/mysecreturl/(.*?)$ {
    rewrite ^/pub/([0-9a-z]+)/(.*)$ /bitrix/pub/?CHANNEL_ID=$2 break;
    # IM doesn't wait
    #access_log  /var/log/nginx/post.log  logpost;
    proxy_ignore_client_abort on;
    proxy_pass http://nodejs_pub;
}

location ~* ^/api/mysecreturl/server-stat/(.*?)$ {
    rewrite ^/api/(.*)$ /server-stat/ break;
    access_log off;
    proxy_pass http://nodejs_pub;
    proxy_max_temp_file_size 0;
    proxy_read_timeout 43800;
}

location ~* ^/api/mysecreturl/nginx_status/ {
    stub_status on;
}

Как использовать

1. Установить модуль awz.pull

Установка модуля

2. Настроить модуль

Параметр Пример
Адрес отправки сообщений (#CHANNEL_ID# - ид канала) https://push.zahalski.dev/pub/mysecreturl/#CHANNEL_ID#
Адрес подписки на каналы сообщений (#CHANNEL_ID# - ид канала) wss://push.zahalski.dev/ws/?CHANNEL_ID=#CHANNEL_ID#&binaryMode=false&revision=19
Адрес API NodeJs RTC сервера https://push.zahalski.dev/api/mysecreturl/
Секретный ключ /etc/push-server/push-server*.json в секции security в параметре key

3. Разместить компонент

<?$APPLICATION->IncludeComponent(
    "awz:pull.client",
    "",
    Array(
        "TYPE" => "",
        "USER" => ""
    )
);?>

4. Ловим сообщение

BX.addCustomEvent('awz.pull.onmessage',
    BX.delegate(function (msg) {
        console.log(msg);
    })
);

5. Отправка сообщения

см. пункт 6

6. Документация

App::sendToUser - отправляет сообщение на клиент

Параметр Тип Описание
$userId int Ид пользователя
$message array Сообщение отправляемое на клиент
$options array Дополнительные опции
$type string Тип канала (например, public или private)

вернет true в случае успеха или false в случае ошибки

use Bitrix\Main\Loader;
use Awz\Pull\App;
if(Loader::includeModule('awz.pull')){
App::sendToUser(1, 
    [
        'time'=>time(), 
        'date_plus_day'=>\Bitrix\Main\Type\DateTime::createFromTimestamp(time()+86400)
    ]
);
}

Обсуждение в Telegram

Для улучшения работы сайта используются cookie.
Подробнее об этом в Политике cookie.
Принять Настроить