Пример настройки 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