Содержание
- Проблема чего: «Ожидание доступного сокета»?
- WebSocket connection to ‘ws://localhost:4000/’ failed: Error during WebSocket handshake: Unexpected response code: 400 #4778
- Comments
- Настройка модуля Push and Pull для корпоративного портала 1С-Битрикс
- Введение
- Проблема
- Сборка nginx с модулем nginx-push-stream-module
- Подключение собранного nginx
- Настройка nginx для модуля push and pull
- Настройка модуля Bitrix NodeJS RTC
- Заключение
- WebSocket connection to failed: Invalid frame header #2557
- Comments
Проблема чего: «Ожидание доступного сокета»?
Добрый день!
Замечено следующее поведение и непонятно как его обойти. При множестве вкладок (в основном 8-10+) + новое обращение на сервере приводит к зависанию в вебкитовских браузерах.
Сначала замечено было на сайте КорПортала, но потом заметил забавную вещь — и если открыть форума битрикса чтук 10-15 вкладок, при открытии новой может выскочить такой же прикол.
Как решить данную проблему?
И вообще на уровне чего эта проблема существует? На уровне браузера ограничение, или на уровне сервера (его настроек) или на уровне самого движка битрикса?
Очень грустная ситуация, потому что части сотрудников компании приходится постоянно держать открытыми 10-20+ вкладок — много задач и по ним делать мониторинг, приходится много переключаться.
Уже месяц как перешли на коробку BX24 с мегаплана и мучаемся =(
P.S. Модуль nginx push stream настроен корректно, проверка функций BX24 на него не ругается (вообще все пункты зеленые), отключение в настройках данного модуля «вебСоккетов» (снятие галки) результата не дает.
Цитата |
---|
Максим Кучук написал: Александр Букуров , это ограничение на уровне сервера срабатывает |
Цитата |
---|
Роман Клевцов написал: Подскажите, в каком разделе админки можно включить галку «Включить поддержку WebSocket». Тоже намучались ( |
Добрый день! У нас на свежей установке битрикса тоже есть проблема с websocket.
Конфигурация:
Виртуальная машина BitrixVM7.1.0 с объемом диска 20 Гб для OVA (Sphere and etc.)
1С-Битрикс: Корпоративный портал 17.0.5.
Доступ с внешки настроен через обратный прокси на базе nginx (думаю это ключевой момент)
Описание проблемы:
Постоянно появляются ошибки при работе следующего содержания:
«WebSocket connection to ‘ws://domain.ru/bitrix/subws/?CHANNEL_ID=9ec059209540e24cb61da2ad3072c960/a5dedb91e15e1b16 b84fcb7ea951a578&tag=1&time=Fri,%2018%20Mar%202022%2021:00:00%20GMT’ failed: Error during WebSocket handshake: Unexpected response code: 400»
При этом если в конфигурации модуля push and pull убрать галочку с настройки «Включить поддержку WebSocket», то ошибки нет, но тогда появляются ошибки «Ожидание свободного сокета» и часть открытых вкладок в браузере Chrome начинают сильно виснуть.
Проверка конфигурации ошибок по сокетам не показывает вобще, то есть судь по проверке системы — все ок.
Подскажите, возможно надо корректно настроить работу с сокетами за реверс прокси, как это сделать?
Источник
WebSocket connection to ‘ws://localhost:4000/’ failed: Error during WebSocket handshake: Unexpected response code: 400 #4778
I can’t figure out what is the problem?
server:
client:
; if (error) return
The text was updated successfully, but these errors were encountered:
Even I am facing the same issue. Did you find a solution?
Hi @ThiruvenkatamR, Did you try my suggestion, ws://localhost:4000/graphql.
Yes, I tried. But no luck
This is the error
‘The connection to ws://localhost:4000/graphql was interrupted while the page was loading.’
Thanks @vincenterc , this is working in Chrome, but I have this issue in Firefox. Thanks once again.
I continue to get this issue on my Angular 8 app. I seem to have all the correct code
Has anyone had any luck with this?
Hi, I’m facing the same issue. I tried this but it no works! Does anyone have a solution?
Any fix?? Facing the same problem with Apollo Client 3
Nevermind, i forgot to add the /graphql at the end of the url just like @vincenterc pointed out.
I had this: ws://localhost:4000
Working code just in case anyone else faces this:
Adding the /graphql fixed this issue for me too.
Was a reverseproxy configuration issue for me, not a library issue
Adding /subscriptions worked for me
My problem was that I am using an Express server and applying Apollo Server as a middleware. I was not aware that I need to call graphqlServer.installSubscriptionHandlers(expressServer) too, as this was buried deep in the docs. That needs to be called on the HTTP server instance you get returned from expressApp.listen() . Now it is working!
Thank you @danieldunderfelt . You saved my day.
Thank you @danieldunderfelt. You made my year.
This doesn’t sound like an Apollo Client issue, but if anyone thinks it is and can provide a small runnable reproduction using @apollo/client@latest , we’ll take a look. Thanks!
Источник
Настройка модуля Push and Pull
для корпоративного портала 1С-Битрикс
Введение
Если у вас есть коробочная версия Битрикс24, и вы хотите использовать живую ленту, мгновенный чат, и получать push уведомления на телефон — вам понадобится модуль push and pull.
Под капотом у модуля модуль push and pull находится nginx с дополнительным модулем nginx-push-stream-module. Данный модуль не входит в стандартную поставку, поэтому для его подключения нужно собирать (компилировать) nginx из исходников.
Модуль nginx-push-stream-module есть в виртуальной машине битрикса (BitrixVM) из коробки. Поэтому самое простое решение данной задачи — развернуть BitrixVM и поставить на нее корпоративный портал.
Но если у вас нет BitrixVM и вы не хотите только ради этого переходить на нее — нужно скомпилировать nginx с поддержкой модуля nginx-push-stream-module из исходников, вручную.
Проблема
При работе с сайтом в публичной части выводится красная полоска с сообщением об ошибке “Отсутствует соединение с сервером”. Эта ошибка говорит о наличии проблемы с модулем push and pull.
При наличии такой ошибки, чтобы увидеть новое сообщение в чате — нужно либо долго ждать, либо перезагрузить страницу. В живой ленте обновления тоже будут появляться с большой задержкой или после перезагрузки страницы.
Можно выделить ряд характерных сообщений об ошибках (их можно найти в админке или в логах), свидетельствующих о необходимости настройки модуля push and pull:
- потеряно соединение с сервером
- выключена опция nginx push stream module в настройках модуля push and pull
- модуль nginx-push-stream работает некорректно
- не удалось подключиться к модулю nginx-push-stream отправки мгновенных сообщений
- не работает бизнес-чат в реальном времени (check_pull_stream): fail
- не настроен модуль nginx push-stream-module
- требуется установка nginx-push-stream-module
- требуется настройка bitrix push server
- требуется компиляция nginx для модуля push and pull для корпоративного портала
Коллеги-специалисты, которыми я задавал вопрос про настройку данного модуля ничего толком подсказать не смогли. Официальная иформация разбросана по разным статьям и всегда заканчивается рекомендацией воспользоваться BitrixVM. Поэтому трудно понять правильную последовательность действий.
Во время поиска информации мне попалась группа тематических веток на форумах: один, два, три, четыри, пять. И даже заказы решения данной задачи на биржах фриланса: один и два.
Проблемы с настройкой модуля push and pull регулярно возникают у многих. Судя по всему, задача не имеет тривиального решения, и исчерпывающего руководства, собранного в одном месте. Попробую исправить ситуацию.
Сборка nginx с модулем nginx-push-stream-module
Соберите NGINX с поддержкой модуля nginx-push-stream-module;
но не сказано в деталях как его собрать. Об этом сказано на сайте самого модуля nginx-push-stream-module, в разделе Installation. Там подробно описан процесс сборки, но есть некоторые нюансы, которые я хочу рассмотреть.
Текущая версия модуля nginx-push-stream-module 0.5.4 , а в документации битрикса сказано:
Внимание! Работа модуля Push and Pull поддерживается только до версии 0.5 nginx-push-stream-module. Более свежии версии не поддерживаются, так как для работы Push and Pull разрабатывается специальное решение от «1С-Битрикс».
Еще одна сложность заключается в том, что версия модуля nginx-push-stream-module завязана на версию nginx. Версия моего текущего nginx была 1.12 и мне не удалось собрать из исходников эту же версию nginx, которая бы скомпилировалась с модулем nginx-push-stream-module версии 0.5 или 0.5.4. Поэтому я решил попробовать собрать nginx последней версии с последней версией модуля nginx-push-stream-module.
В конечном счете, чтобы собрать nginx у меня получилась такая конфигурация:
$ ./configure —add-module=../nginx-push-stream-module —with-zlib=./zlib-1.2.11 —with-openssl=./openssl-1.0.2n —with-pcre=./pcre-8.41 —with-http_ssl_module
—with-http_ssl_module — этот модуль нужен обязательно, если на сайте используется https. А для этого модуля нужна openssl библиотека. Но последняя версия (1.1.0) openssl библиотеки не годится, так как с ней nginx не компилируется — это известный баг и пока что нужно использовать старую версию(1.0.2).
—with-zlib — Библиотека нужна для модуля ngx_http_gzip_module. Указывается путь к папке с исходниками библиотеки.
—with-pcre — Библиотека нужна для использования регулярных выражений в директиве location и для модуля ngx_http_rewrite_module. Указывается путь к папке с исходниками библиотеки.
—add-module=../nginx-push-stream-module — подключаем модуль nginx-push-stream-module. Указывается путь к папке с исходниками библиотеки.
То есть, сначала нужно скачать исходники всех библиотек, распаковать их (например в текущей папке) и указать путь к ним.
Итоговый список bash команд (запускать от имени пользователя root ), чтобы собрать nginx со всеми необходимыми модулями:
Во время выполнения команды make могут появиться различные ошибки, в основном это недостающие пакеты для компиляции. В конце статьи я приложил несколько ссылок по решению возможных проблем, из тех, с которыми я столкнулся.
После успешного выполнения команды ./configure , должно получить примерно следующее:
nginx binary file: «/usr/local/nginx/sbin/nginx» — в этом месте будет располагаться новый собранный бинарник, отсюда его нужно будет копировать вместо старого.
После успешного выполнения команды make install (она может выполняться долго), должно получиться примерно следующее:
Если появились какие-то сообщения об ошибках или есть строки красного цвета, значит что-то пошло не так.
Теперь можно проверить, правильно ли собрался nginx, есть ли там указанные модули /usr/local/nginx/sbin/nginx -V :
Таким же образом, можно перед сборкой посмотреть, какие модули были ранее установлены в старом nginx, скопировать их и добавить в список модулей для установки, при компиляции нового бинарника nginx.
Подключение собранного nginx
- положить новый бинарник в рабочую папку вместо старого ( у меня /usr/sbin/nginx)
- проверить и настроить пути к конфигам
- остановить службу nginx
- проверить, что нет ошибок
- перезапустить службу nginx
Список bash команд для подключения нового бинарника, в общем виде:
/path/to/old/ — замените на свой путь к старому бинарнику.
Не удаляйте старый бинарник! Переименуйте его на время тестирования, чтобы вернуть его назад, если возникнут проблемы с работой сайтов.
Новый бинарник подтянет старые файлы конфигурации, однако сразу же проверьте работоспособность своих сайтов.
Но если путь к конфигам отличается от стандартного и не был указан при компиляции — может понадобится прописать путь к старому конфигу.
В моем случае новый бинарник подтягивал конфиг из /usr/local/nginx/conf/nginx.conf , а старые конфиги былы тут /etc/nginx/nginx.conf . Для решения этой проблемы достаточно создать симлинк на старый путь:
Настройка nginx для модуля push and pull
1) В nginx добавить в блок server<> (для виртуального хоста) локейшены из битриксовой документации
2) В nginx добавить общие настройки модуля push and pull.
Нужно создать новый файл в папке с конфигами nginx для виртуального хоста, например push_and_pull.conf и поместить в него настройки. Некоторые строки пришлось закомментировать, так как они нужны только для BitrixVM.
3) Включить модуль push and pull в настройках в админке
Значение параметра На сервер установлена ближе всего к Виртуальная машина 4.4 и выше (nginx-push-stream-module 0.4.0) , поэтому устанавливаем именно этот вариант.
Теперь можно тестировать работу модуля push and pull — сообщения в чате должны приходить мгновенно, а в живой ленте должны появляться изменения (комментарии, просмотры, лайки, записи) без перезагрузки страницы.
Настройка модуля Bitrix NodeJS RTC
Push сервер на основе nginx не справлялся с нагрузкой, которую создавали пользователи облачного сервиса Битрикс24, и поэтому появилась необходимость в разработке нового push сервера — NodeJS RTC, у которого под капотом Node.js. Новый push сервер встроен в BitrixVM версии 7+ и есть инструкция по его настройке. Мне не удалось найти информацию, как его настраивать без использования BitrixVM.
Для любой коробочной версии корпоративного портала, в которой количество активных пользователей намного меньше, чем в облачной версии — вполне хватит старой реализации push сервера на основе nginx.
Заключение
Чтобы запустить модуль push and pull необязательно ставить BitrixVM.
Есть мнение, что сборка из исходников — это слишком простой путь, и что правильнее собрать полноценный deb-пакет, который будет управляться пакетным менеджером. Для такого пакета можно запретить обновление (hold), чтобы впредь не обновлялся.
В данном случае опробована связка Debian + nginx 1.2.0 + nginx-push-stream-module 0.5.4 + bitrix 17.5.8 — все работает.
Источник
WebSocket connection to failed: Invalid frame header #2557
WebSocket connection to ‘ws://10.1.30.58/socket.io/?EIO=3&transport=websocket’ failed: Invalid frame header
The text was updated successfully, but these errors were encountered:
On network tab
On client:
I used node-static for serving files, with it socket.io doesn’t work. With express or default node(http) it works.
@lgg is this issue solved? I have got the same problem
@rizkiaditya24 i used express.js instead of node-static
Same issue. Any one have solution for it?
Error:
WebSocket connection to ‘ws://192.168.0.160/socket.io/?EIO=3&transport=websocket’ failed: Invalid frame header
@rrpatilcse what server you are using?
expressjs?
i used nginx proxy django websoket service.now no way got it!throw «WebSocket connection to failed: Invalid frame header»
@zengliangbigdata show your nginx config, i think it could be troubles with proxy_pass
Same issue here.
VM41:164 WebSocket connection to ‘ws://localhost:1337/socket.io/?EIO=3&transport=websocket&sid=dl2GgAoz02RW0OjCAAAC’ failed: Invalid frame header
In the node.js console got this messages:
info: Client disconnect: NaN error: Can not find client NaN on disconnect
I’m using Chrome and have this error. Everything works fine in IE.
Same issue, I only get the error in the chrome console
Same issue, I only get the error in the chrome console
SAME.. do you find any solution??
same!! someone tell me what’s going on
Hi, I have encountered the same issue.
I am using NodeJS (LTS v12.18.1) with ExpressJS (v4.17.1) and Socket.io (v2.3.0).
Here is my server.js
`const express = require(‘express’);
const app = express();
const server = require(‘http’).createServer(app);
const io = require(‘socket.io’)(server);
io.on(‘connection’ ,socket => <
// socket events handling
>);
Has anyone found a solution?
Hi, I have encountered the same issue.
I am using NodeJS (LTS v12.18.1) with ExpressJS (v4.17.1) and Socket.io (v2.3.0).
Here is my server.js
`const express = require(‘express’);
const app = express();
const server = require(‘http’).createServer(app);
Источник
Пользователь 936775 Посетитель Сообщений: 72 |
Доброго времени суток. После смены IP отвалился Push and Pull. https://dev.1c-bitrix.ru/support/forum/forum32/topic98131/?PAGEN_1=2 Решения не обнаружил. Используется VM 7.3 Как мне его запустить? |
Пользователь 936775 Посетитель Сообщений: 72 |
|
Пользователь 936775 Посетитель Сообщений: 72 |
Нашел ошибку! $check = new CSiteCheckerTest(); Connection to ssl://localhost:443 (certificate check enabled) Fail Connection to ssl://localhost:443 Fail Нравится16:23 Очевидно из-за этого не пашит. В чём причина может быть? |
Пользователь 936775 Посетитель Сообщений: 72 |
#4 0 14.09.2018 13:45:48 Обновил VM до версии 7.3.2.
Так же не пропали ошибки при проверке системы.
Прикрепленные файлы Снимок экрана от 2018-09-14 14-32-41.png (2.58 КБ) Снимок экрана от 2018-09-14 14-24-38.png (44.98 КБ) |
||||
Пользователь 936775 Посетитель Сообщений: 72 |
Ситуация с проблемой! При смене место положения нашего сервера поменялся IP. Может кто подскажет где мне его в файлах VM поменять? И где VM правит фай push-server-multi? Список файлов в которых встречается мой IP: Внимание вопрос: какие формируются VM Bitrix а с каких подтягивает инфу? |
Пользователь 936775 Посетитель Сообщений: 72 |
К сожалению, смена IP в файлах ни к чему не привела( Странно почему. И тут поспел ответ тех. поддержки и они говорят переустановить VM Bitrix. |
Пользователь 936775 Посетитель Сообщений: 72 |
#7 0 20.09.2018 14:40:40 Обновился до бэтки. Дальше очень интересно себя всё повело! При авторизации пользователя в системе сначала сверху выскакивает синее окно с надписью «Соединение установлено» потом через пару секунд — желтое с надписью «Ожидает соединения» такая игра фраз повторяется три раза потом окончательно висит надпись на красном фоне, что «нет соединения с сервером». Ошибки в консоле:
|
||
Пользователь 936775 Посетитель Сообщений: 72 |
Долго я уже мучаюсь. Установил заново VM и вы думаете всё поехало? Нет! Виртуальная машина настраивает конфиги не совсем верно. Она создаёт фай /etc/hosts c внутренним IP. В итоге у меня горела табличка вверху экрана, что нет соединения с сервером. Я залез и изменил там IP на внешний ( перед машиной стоит роутер, указал его IP). Теперь p&p не рыба ни мясо. То работает то не работает) Т.е. через секунд 40 он обновляется. И в логи валится ошибка сокета 400. Почему это так работает? Моя логика подсказывает: У нас есть пул и у него должен быть внешний IP а у сайтов в пуле локальные. Так? |
Пользователь 936775 Посетитель Сообщений: 72 |
#9 0 02.10.2018 14:46:02 Частично проблему решил. Найден БАГ! Непонятно где он в коробке или VM, но при развороте бекапа сайта (коробки) с переустановленным окружением не прописывается «Код-подпись для взаимодействия с сервером» в настройках модуля Push and Pull. В результате не работал НИКАКОЙ P&P!!! Достать этот ключ получилось методом установки на новый сайт демонстрационной версии коробки и там в настройках его копировать. Кроме того после разворота отваливаются сокеты и модули. Пока не знаю как восстановить их работу. Заработал модуль Push/RTC service, но не NGINX. |
Введение
Если у вас есть коробочная версия Битрикс24, и вы хотите использовать живую ленту, мгновенный чат, и получать push уведомления на телефон — вам понадобится модуль push and pull.
Под капотом у модуля модуль push and pull находится nginx с дополнительным модулем nginx-push-stream-module. Данный модуль не входит в стандартную поставку, поэтому для его подключения нужно собирать (компилировать) nginx из исходников.
Модуль nginx-push-stream-module есть в виртуальной машине битрикса (BitrixVM) из коробки. Поэтому самое простое решение данной задачи — развернуть BitrixVM и поставить на нее корпоративный портал.
Но если у вас нет BitrixVM и вы не хотите только ради этого переходить на нее — нужно скомпилировать nginx с поддержкой модуля nginx-push-stream-module из исходников, вручную.
Проблема
При работе с сайтом в публичной части выводится красная полоска с сообщением об ошибке “Отсутствует соединение с сервером”. Эта ошибка говорит о наличии проблемы с модулем push and pull.
При наличии такой ошибки, чтобы увидеть новое сообщение в чате — нужно либо долго ждать, либо перезагрузить страницу. В живой ленте обновления тоже будут появляться с большой задержкой или после перезагрузки страницы.
Можно выделить ряд характерных сообщений об ошибках (их можно найти в админке или в логах), свидетельствующих о необходимости настройки модуля push and pull:
- потеряно соединение с сервером
- выключена опция nginx push stream module в настройках модуля push and pull
- модуль nginx-push-stream работает некорректно
- не удалось подключиться к модулю nginx-push-stream отправки мгновенных сообщений
- не работает бизнес-чат в реальном времени (check_pull_stream): fail
- не настроен модуль nginx push-stream-module
- требуется установка nginx-push-stream-module
- требуется настройка bitrix push server
- требуется компиляция nginx для модуля push and pull для корпоративного портала
Коллеги-специалисты, которыми я задавал вопрос про настройку данного модуля ничего толком подсказать не смогли. Официальная иформация разбросана по разным статьям и всегда заканчивается рекомендацией воспользоваться BitrixVM. Поэтому трудно понять правильную последовательность действий.
Во время поиска информации мне попалась группа тематических веток на форумах: один, два, три, четыри, пять. И даже заказы решения данной задачи на биржах фриланса: один и два.
Проблемы с настройкой модуля push and pull регулярно возникают у многих. Судя по всему, задача не имеет тривиального решения, и исчерпывающего руководства, собранного в одном месте. Попробую исправить ситуацию.
Сборка nginx с модулем nginx-push-stream-module
В учебном курсе Администратор. Модули → Push and Pull сказано
Соберите NGINX с поддержкой модуля nginx-push-stream-module;
но не сказано в деталях как его собрать. Об этом сказано на сайте самого модуля nginx-push-stream-module, в разделе Installation. Там подробно описан процесс сборки, но есть некоторые нюансы, которые я хочу рассмотреть.
Текущая версия модуля nginx-push-stream-module 0.5.4, а в документации битрикса сказано:
Внимание! Работа модуля Push and Pull поддерживается только до версии 0.5 nginx-push-stream-module. Более свежии версии не поддерживаются, так как для работы Push and Pull разрабатывается специальное решение от «1С-Битрикс».
Еще одна сложность заключается в том, что версия модуля nginx-push-stream-module завязана на версию nginx. Версия моего текущего nginx была 1.12 и мне не удалось собрать из исходников эту же версию nginx, которая бы скомпилировалась с модулем nginx-push-stream-module версии 0.5 или 0.5.4. Поэтому я решил попробовать собрать nginx последней версии с последней версией модуля nginx-push-stream-module.
В конечном счете, чтобы собрать nginx у меня получилась такая конфигурация:
$ ./configure --add-module=../nginx-push-stream-module --with-zlib=./zlib-1.2.11 --with-openssl=./openssl-1.0.2n --with-pcre=./pcre-8.41 --with-http_ssl_module
--with-http_ssl_module
— этот модуль нужен обязательно, если на сайте используется https. А для этого модуля нужна openssl библиотека. Но последняя версия (1.1.0) openssl библиотеки не годится, так как с ней nginx не компилируется — это известный баг и пока что нужно использовать старую версию(1.0.2).
--with-zlib
— Библиотека нужна для модуля ngx_http_gzip_module. Указывается путь к папке с исходниками библиотеки.
--with-pcre
— Библиотека нужна для использования регулярных выражений в директиве location и для модуля ngx_http_rewrite_module. Указывается путь к папке с исходниками библиотеки.
--add-module=../nginx-push-stream-module
— подключаем модуль nginx-push-stream-module. Указывается путь к папке с исходниками библиотеки.
То есть, сначала нужно скачать исходники всех библиотек, распаковать их (например в текущей папке) и указать путь к ним.
Итоговый список bash команд (запускать от имени пользователя root
), чтобы собрать nginx со всеми необходимыми модулями:
# clone the nginx-push-stream-module project
git clone https://github.com/wandenberg/nginx-push-stream-module.git
NGINX_PUSH_STREAM_MODULE_PATH=$PWD/nginx-push-stream-module
# get desired nginx version (works with 1.2.0+)
wget http://nginx.org/download/nginx-1.2.0.tar.gz
# extract nginx
tar xzvf nginx-1.2.0.tar.gz
cd nginx-1.2.0
# download and extract zlib module
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -xf zlib-1.2.11.tar.gz
# download and extract openssl module
wget https://www.openssl.org/source/openssl-1.0.2n.tar.gz
tar -xf openssl-1.0.2n.tar.gz
# download and extract pcre module
wget https://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz
tar -xf pcre-8.41.tar.gz
# configure and build
./configure --add-module=../nginx-push-stream-module --with-zlib=./zlib-1.2.11 --with-openssl=./openssl-1.0.2n --with-pcre=./pcre-8.41 --with-http_ssl_module
make build
# install and finish
make install
Во время выполнения команды make могут появиться различные ошибки, в основном это недостающие пакеты для компиляции. В конце статьи я приложил несколько ссылок по решению возможных проблем, из тех, с которыми я столкнулся.
После успешного выполнения команды ./configure
, должно получить примерно следующее:
nginx binary file: "/usr/local/nginx/sbin/nginx"
— в этом месте будет располагаться новый собранный бинарник, отсюда его нужно будет копировать вместо старого.
После успешного выполнения команды make install
(она может выполняться долго), должно получиться примерно следующее:
Если появились какие-то сообщения об ошибках или есть строки красного цвета, значит что-то пошло не так.
Теперь можно проверить, правильно ли собрался nginx, есть ли там указанные модули /usr/local/nginx/sbin/nginx -V
:
Таким же образом, можно перед сборкой посмотреть, какие модули были ранее установлены в старом nginx, скопировать их и добавить в список модулей для установки, при компиляции нового бинарника nginx.
Подключение собранного nginx
Порядок действий:
- положить новый бинарник в рабочую папку вместо старого ( у меня /usr/sbin/nginx)
- проверить и настроить пути к конфигам
- остановить службу nginx
- проверить, что нет ошибок
- перезапустить службу nginx
Список bash команд для подключения нового бинарника, в общем виде:
service nginx stop
mv /path/to/old/nginx /path/to/old/nginx_backup
mv /usr/local/nginx/sbin/nginx /path/to/old/nginx
ngint -t
service nginx start
/path/to/old/
— замените на свой путь к старому бинарнику.
Не удаляйте старый бинарник! Переименуйте его на время тестирования, чтобы вернуть его назад, если возникнут проблемы с работой сайтов.
Новый бинарник подтянет старые файлы конфигурации, однако сразу же проверьте работоспособность своих сайтов.
Но если путь к конфигам отличается от стандартного и не был указан при компиляции — может понадобится прописать путь к старому конфигу.
В моем случае новый бинарник подтягивал конфиг из /usr/local/nginx/conf/nginx.conf
, а старые конфиги былы тут /etc/nginx/nginx.conf
. Для решения этой проблемы достаточно создать симлинк на старый путь:
cd /usr/local/nginx/
mv conf/ conf_del
ln -s /etc/nginx/ ./conf
Настройка nginx для модуля push and pull
1) В nginx добавить в блок server{}
(для виртуального хоста) локейшены из битриксовой документации
# Location for long-polling connections
location ^~ /bitrix/sub {
# we don't use callback and droppped it (XSS)
if ( $arg_callback ) {
return 400;
}
push_stream_subscriber long-polling;
push_stream_allowed_origins "*";
push_stream_channels_path $arg_CHANNEL_ID;
push_stream_last_received_message_tag $arg_tag;
if ($arg_time) {
push_stream_last_received_message_time "$arg_time";
}
push_stream_longpolling_connection_ttl 40;
push_stream_authorized_channels_only on;
push_stream_message_template '#!NGINXNMS!#{"id":~id~,"channel":"~channel~","tag":"~tag~","time":"~time~","eventid":"~event-id~","text":~text~}#!NGINXNME!#';
}
# Location for websocet connections
location ^~ /bitrix/subws/ {
push_stream_subscriber websocket;
push_stream_channels_path $arg_CHANNEL_ID;
push_stream_websocket_allow_publish off;
push_stream_ping_message_interval 40s;
push_stream_authorized_channels_only on;
push_stream_last_received_message_tag "$arg_tag";
push_stream_last_received_message_time "$arg_time";
push_stream_message_template '#!NGINXNMS!#{"id":~id~,"channel":"~channel~","tag":"~tag~","time":"~time~","eventid":"~event-id~","text":~text~}#!NGINXNME!#';
}
2) В nginx добавить общие настройки модуля push and pull.
Нужно создать новый файл в папке с конфигами nginx для виртуального хоста, например push_and_pull.conf
и поместить в него настройки.
Некоторые строки пришлось закомментировать, так как они нужны только для BitrixVM.
# Common settings for nginx-push-stream-module
push_stream_shared_memory_size 256M;
push_stream_max_messages_stored_per_channel 1000;
push_stream_max_channel_id_length 32;
push_stream_max_number_of_channels 200000;
push_stream_message_ttl 86400;
# поддержка мобильных платформ, для http запросов
server {
# nginx-push-stream-module server for push & pull
listen 8893;
server_name _;
# Include error handlers
#include bx/conf/errors.conf;
# Include im subscrider handlers
#include bx/conf/im_subscrider.conf;
location ^~ / { deny all; }
}
# поддержка мобильных платформ, для https запросов
# SSL enabled server for reading personal channels
server {
listen 8894;
server_name _;
#include bx/conf/ssl.conf;
# Include error handlers
#include bx/conf/errors.conf;
# Include im subscrider handlers
#include bx/conf/im_subscrider.conf;
location ^~ / { deny all; }
}
# для публикации сообщений
# Server to push messages to user channels
server {
listen 127.0.0.1:8895;
server_name _;
location ^~ /bitrix/pub/ {
push_stream_publisher admin;
push_stream_channels_path $arg_CHANNEL_ID;
push_stream_store_messages on;
allow 127.0.0.0/8;
deny all;
}
location ^~ / { deny all; }
# Include error handlers
#include bx/conf/errors.conf;
}
3) Включить модуль push and pull в настройках в админке
Значение параметра На сервер установлена ближе всего к Виртуальная машина 4.4 и выше (nginx-push-stream-module 0.4.0), поэтому устанавливаем именно этот вариант.
Теперь можно тестировать работу модуля push and pull — сообщения в чате должны приходить мгновенно, а в живой ленте должны появляться изменения (комментарии, просмотры, лайки, записи) без перезагрузки страницы.
Настройка модуля Bitrix NodeJS RTC
Push сервер на основе nginx не справлялся с нагрузкой, которую создавали пользователи облачного сервиса Битрикс24, и поэтому появилась необходимость в разработке нового push сервера — NodeJS RTC, у которого под капотом Node.js. Новый push сервер встроен в BitrixVM версии 7+ и есть инструкция по его настройке. Мне не удалось найти информацию, как его настраивать без использования BitrixVM.
Для любой коробочной версии корпоративного портала, в которой количество активных пользователей намного меньше, чем в облачной версии — вполне хватит старой реализации push сервера на основе nginx.
Заключение
Чтобы запустить модуль push and pull необязательно ставить BitrixVM.
Есть мнение, что сборка из исходников — это слишком простой путь, и что правильнее собрать полноценный deb-пакет, который будет управляться пакетным менеджером. Для такого пакета можно запретить обновление (hold), чтобы впредь не обновлялся.
В данном случае опробована связка Debian + nginx 1.2.0 + nginx-push-stream-module 0.5.4 + bitrix 17.5.8 — все работает.
Полезные ссылки
Общая информация
- Зачем настраивать модуль Push&Pull
Инструкции по сборке nginx
- Сборка nginx из исходных файлов — офиц. документация
- Пример сборки nginx с добавлением модуля ngx_pagespeed
- Учебный курс — Администратор. Модули — Push and Pull
- Как установить nginx push-and-pull на Debian (для Bitrix)
- Push and Pull for Bitrix without BitrixEnv
Исходники библиотек
- nginx core
- nginx-push-stream-module (push and pull)
- zlib
- openssl
- pcre
Решение возможных проблем
- git command not found
- make command not found
- configure: error: You need a C++ compiler for C++ support
- nginx — src/core/ngx_sha1.h:19:17: no such file or directory
Во время тестирования сайта, выскакивает следующая ошибка:
Работа с сокетами (check_socket): Fail
А в журнале мы видим следующий лог:
2016-Feb-27 13:41:10 Работа с сокетами (check_socket): Fail Connection to site.ru:80 Success == Request == GET /bitrix/admin/site_checker.php?test_type=socket_test&unique_id=83f81a8666278b68e58012ce161a1dd0 HTTP/1.1 Host: site.ru == Response == HTTP/1.1 404 Not Found Server: nginx/1.4.6 (Ubuntu) Date: Sat, 27 Feb 2016 12:41:10 GMT Content-Type: text/html Content-Length: 177 Connection: keep-alive == Body == <html> <head><title>404 Not Found</title></head> <body bgcolor="white"> <center><h1>404 Not Found</h1></center> <hr><center>nginx/1.4.6 (Ubuntu)</center> </body> </html> ==========
Для начала мы видим в этом логе, что при запросе система получает 404 ошибку. Нам нужно понять почему она происходит. Для этого нам нужно проверить логи веб-сервера. Так как у меня работает на nginx + apache2, я открыл логи nginx (Linux /var/log/nginx/error.log).
В данном логе я ищу мой запрос
2016/02/27 13:41:10 [error] 2309#0: *658 openat() "/usr/share/nginx/html/bitrix/admin/site_checker.php" failed (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET /bitrix/admin/site_checker.php?test_type=socket_test&unique_id=83f81a8666278b68e58012ce161a1dd0 HTTP/1.1", host: "site.ru"
И что мы тут видим? Когда скрипт обращается сам к себе, то происходит обращение вообще не понятно по какому адресу «/usr/share/nginx/html/bitrix/admin/site_checker.php», тогда как сайт лежит: /var/www/site.ru/www/bitrix/admin/site_checker.php
Так же обратите внимание по какому адресу обращается скрипт:
client: 127.0.0.1, server: localhost,
Из этого мы делаем вывод что site.ru привязан к localhost и при обращении сайта к самому себе пытается найти файлы не в папке сайта, а в папке nginx по умолчанию. Открыв фаил /etc/hosts я увидел следующую запись:
127.0.0.1 localhost.localdomain localhost site.ru
Изменив эту строчку на
127.0.0.1 localhost.localdomain localhost
я успешно прошел тест, и ошибка больше не возникала!
Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
Администратор сервиса Битрикс24 (коробочная версия)
Сложность урока:
4 уровень — сложно, требуется сосредоточится, внимание деталям и точному следованию инструкции.
5
Недоступно в редакциях:
Старт, Стандарт
Настройка Push and Pull |
Если ваш Битрикс установлен на виртуальной машине
BitrixVM версии 7.1 или старше
Виртуальная машина сэкономит время и силы на правильное развертывание и администрирование сайта или внутреннего информационного ресурса на базе продуктов «1С-Битрикс».
Подробнее …
, то у вас нет необходимости настраивать модуль Push and Pull. В виртуальной машине уже поставляется отдельный Push-сервер, он настроен и сконфигурирован и работает «из коробки».
Если, всё же необходимо произвести некоторые изменения, то это делается на странице Настройки > Настройки продукта > Настройки модулей > Push and Pull:
- Укажите секретный код для подписи сообщения. Это 32-х значный произвольный код, который указывается в настройках пуш-сервера:
./push-server/config/config.json: "security": { "key":
Примечание: В виртуальной машине
BitrixVM
«1C-Битрикс: Виртуальная машина» — бесплатный программный продукт, готовый к немедленному использованию виртуальный сервер, полностью настроенный, протестированный и адаптированный для оптимальной работы как с продуктами «1С-Битрикс», так и с любыми PHP-приложениями. Имеется в версии для Windows и для Unix систем.
Подробнее…
это поле создается автоматически при первом старте службы или при настройке/обновлении и прописывается в настройки сайта. - При необходимости перенастройте шаблоны путей. Домен в адресе для чтения сообщений можно указать
#DOMAIN#
: такая нотация будет автоматически заменяться под нужный домен для многодоменных конфигураций. Пример: http://#DOMAIN#:8893/bitrix/sub/. - Если в системе несколько активных сайтов, то есть возможность выбрать, на каких сайтах модуль не будет работать.
Работа модуля Push and Pull Битрикса на виртуальной машине до версии 5.0. |
---|
Настройка nginx-push-stream-module в версии 0.4.0 (рекомендуется к использованию) |
---|
Настройка nginx-push-stream-module в версии 0.3.4 |
---|
Как использовать модуль, подробно рассказано в курсе Разработчик Bitrix Framework в главе
Push and Pull
Модуль Push & Pull работает в двух режимах:
постоянное подключение к специальному серверу Сервер очередей;
в режиме опроса сервера (60-20-10).
Подробнее …
.
Документация по теме: |
- Настройки модуля (документация)
- Зачем настраивать модуль Push&Pull (блог)
- Работа с модулем для разработчиков
- API модуля
- Push-уведомления в курсе «BitrixMobile — создание кроссплатформенных мобильных приложений»
27
Подписаться на новые материалы раздела:
Итак, многие сталкиваются с такой проблемой как ошибка сокетов при проверке сайта (а с 30 сентября 2021 так еще больше таких проблем, решение будет ниже):
Из-за этой ошибки сайт не может проверить все остальные параметры и вы видите очень много красных предупреждений: «Замечание. Не удалось проверить из-за ошибки в работе с сокетами». Она бывает при установке сайта на виртуальную машину Битрикс.
Что делать?
Первое что нужно сделать при запуске сайта на виртуальной машине Битрикс, это прописать домен в файле hosts. Заходим на сервер по sftp под root-пользователем, идем в корневую папку etc, открываем файл hosts.
В первой строке через пробел прописываем домен (если доменов несколько, прописываем все через пробелы в этой строке).
Получится примерно так:
127.0.0.1 localhost.localdomain localhost rushstudio.by
Сохраняем файл и перезагружаемся. Готово, все работает.
Домен прописан, ошибка осталась
Сейчас (осень 2021) у всех массово возникли проблемы. Это касается изменений на стороне центра сертификации let’s encrypt (30 сентября 2021 года подошел к концу срок действия корневого сертификата IdenTrust DST Root CA X3.). И если у вас было все настроено и работало, ошибка все-равно появляется.
Решается все довольно просто. Подключаемся по SSH, выходим из открывшегося меню (ctrl+c) и вводим команды подряд:
yum install ca-certificates
update-ca-trust
Готово. Теперь все будет работать.
Думаю в следующих обновлениях Виртуальной машины это поправят, но пока это решение рабочее на 100%.
Все-равно не помогло?
Первым делом проверьте AAAA-запись у домена, если она есть, удалите.
Не помогло? Проверьте что доступ к админке, где вы запускаете тест, открыт (нет ограничений по IP или других блокировок).
Дальнейшие случаи крааайне редки, но встречаются. Тут вам понадобятся немного знаний по системному администриролванию и нужно проверить firewall (сервер пытается подключиться сам к себе, а доступ закрыт) или для входа на сайт требуется HTTP/NTLM авторизация (тут уже просто на время тестирования отключите ее).
Как исправить ошибки Push and Pull в битрикс24?
Стоит на локальной сети коробка 1С-Битрикс: Корпоративный портал 21.900.0 сервер напрочь отрублен от интернета(политика компании)
Из ошибок только отправка почты и Доступ снаружи к Экстранет.
У простых пользователей постоянно вылетает Отсутствует соединение с сервером. и со временем вылетает просто, как это можно решить?
код подписи и настройки сделаны по инструкции, через терминал показывает что все ок
http://#DOMAIN#/bitrix/pubweb/
http://#DOMAIN#/bitrix/sub/
ws://#DOMAIN#/bitrix/subws/
Centos 7 BitriVM CRM
4 ядра 16гб оперативы ECC
раздел session в php.ini
- Вопрос задан 26 авг. 2022
- 605 просмотров
Этот ответ выдает REST часть которая должна вернуть настройки.
Возможно происходит одна из следующих частей:
1. Пользователь, под которым наблюдается ошибка, является экстранет пользователем (т.е. не сотрудник организации).
2. Публичная часть портала закрыта для пользователей (в админке, в настройках главного модуля закрыли доступ)
3. Есть ошибки с хранением сессии на сервере.
Если вы не закрывали доступ, то проверьте остальные пункты.
Как проверить что пользователь является сотрудником организации? Нужно открыть в админке профиль пользователя и проверить чтобы у него было проставлено:
— Активное подразделение (подразделение, которое является активным, т.е. не деактивировано)
— Он должен состоять в группе сотрудники (обычно это **: Сотрудники и ID:12)
Затем нужно проверить сессию.
Откройте веб-консоль браузера и посмотрите на sessid (PHPSESSID в cookie) значение, при движении по порталу он не должен меняться часто (т.е. когда он один раз в день меняется — нормально, а если он меняется на каждой странице — не нормально).
Источник
Проблема чего: «Ожидание доступного сокета»?
Добрый день!
Замечено следующее поведение и непонятно как его обойти. При множестве вкладок (в основном 8-10+) + новое обращение на сервере приводит к зависанию в вебкитовских браузерах.
Сначала замечено было на сайте КорПортала, но потом заметил забавную вещь — и если открыть форума битрикса чтук 10-15 вкладок, при открытии новой может выскочить такой же прикол.
Как решить данную проблему?
И вообще на уровне чего эта проблема существует? На уровне браузера ограничение, или на уровне сервера (его настроек) или на уровне самого движка битрикса?
Очень грустная ситуация, потому что части сотрудников компании приходится постоянно держать открытыми 10-20+ вкладок — много задач и по ним делать мониторинг, приходится много переключаться.
Уже месяц как перешли на коробку BX24 с мегаплана и мучаемся =(
P.S. Модуль nginx push stream настроен корректно, проверка функций BX24 на него не ругается (вообще все пункты зеленые), отключение в настройках данного модуля «вебСоккетов» (снятие галки) результата не дает.
Цитата |
---|
Максим Кучук написал: Александр Букуров , это ограничение на уровне сервера срабатывает |
Цитата |
---|
Роман Клевцов написал: Подскажите, в каком разделе админки можно включить галку «Включить поддержку WebSocket». Тоже намучались ( |
Добрый день! У нас на свежей установке битрикса тоже есть проблема с websocket.
Конфигурация:
Виртуальная машина BitrixVM7.1.0 с объемом диска 20 Гб для OVA (Sphere and etc.)
1С-Битрикс: Корпоративный портал 17.0.5.
Доступ с внешки настроен через обратный прокси на базе nginx (думаю это ключевой момент)
Описание проблемы:
Постоянно появляются ошибки при работе следующего содержания:
«WebSocket connection to ‘ws://domain.ru/bitrix/subws/?CHANNEL_ID=9ec059209540e24cb61da2ad3072c960/a5dedb91e15e1b16 b84fcb7ea951a578&tag=1&time=Fri,%2018%20Mar%202022%2021:00:00%20GMT’ failed: Error during WebSocket handshake: Unexpected response code: 400»
При этом если в конфигурации модуля push and pull убрать галочку с настройки «Включить поддержку WebSocket», то ошибки нет, но тогда появляются ошибки «Ожидание свободного сокета» и часть открытых вкладок в браузере Chrome начинают сильно виснуть.
Проверка конфигурации ошибок по сокетам не показывает вобще, то есть судь по проверке системы — все ок.
Подскажите, возможно надо корректно настроить работу с сокетами за реверс прокси, как это сделать?
Источник
Настройка модуля Push and Pull
для корпоративного портала 1С-Битрикс
Введение
Если у вас есть коробочная версия Битрикс24, и вы хотите использовать живую ленту, мгновенный чат, и получать push уведомления на телефон — вам понадобится модуль push and pull.
Под капотом у модуля модуль push and pull находится nginx с дополнительным модулем nginx-push-stream-module. Данный модуль не входит в стандартную поставку, поэтому для его подключения нужно собирать (компилировать) nginx из исходников.
Модуль nginx-push-stream-module есть в виртуальной машине битрикса (BitrixVM) из коробки. Поэтому самое простое решение данной задачи — развернуть BitrixVM и поставить на нее корпоративный портал.
Но если у вас нет BitrixVM и вы не хотите только ради этого переходить на нее — нужно скомпилировать nginx с поддержкой модуля nginx-push-stream-module из исходников, вручную.
Проблема
При работе с сайтом в публичной части выводится красная полоска с сообщением об ошибке “Отсутствует соединение с сервером”. Эта ошибка говорит о наличии проблемы с модулем push and pull.
При наличии такой ошибки, чтобы увидеть новое сообщение в чате — нужно либо долго ждать, либо перезагрузить страницу. В живой ленте обновления тоже будут появляться с большой задержкой или после перезагрузки страницы.
Можно выделить ряд характерных сообщений об ошибках (их можно найти в админке или в логах), свидетельствующих о необходимости настройки модуля push and pull:
- потеряно соединение с сервером
- выключена опция nginx push stream module в настройках модуля push and pull
- модуль nginx-push-stream работает некорректно
- не удалось подключиться к модулю nginx-push-stream отправки мгновенных сообщений
- не работает бизнес-чат в реальном времени (check_pull_stream): fail
- не настроен модуль nginx push-stream-module
- требуется установка nginx-push-stream-module
- требуется настройка bitrix push server
- требуется компиляция nginx для модуля push and pull для корпоративного портала
Коллеги-специалисты, которыми я задавал вопрос про настройку данного модуля ничего толком подсказать не смогли. Официальная иформация разбросана по разным статьям и всегда заканчивается рекомендацией воспользоваться BitrixVM. Поэтому трудно понять правильную последовательность действий.
Во время поиска информации мне попалась группа тематических веток на форумах: один, два, три, четыри, пять. И даже заказы решения данной задачи на биржах фриланса: один и два.
Проблемы с настройкой модуля push and pull регулярно возникают у многих. Судя по всему, задача не имеет тривиального решения, и исчерпывающего руководства, собранного в одном месте. Попробую исправить ситуацию.
Сборка nginx с модулем nginx-push-stream-module
Соберите NGINX с поддержкой модуля nginx-push-stream-module;
но не сказано в деталях как его собрать. Об этом сказано на сайте самого модуля nginx-push-stream-module, в разделе Installation. Там подробно описан процесс сборки, но есть некоторые нюансы, которые я хочу рассмотреть.
Текущая версия модуля nginx-push-stream-module 0.5.4 , а в документации битрикса сказано:
Внимание! Работа модуля Push and Pull поддерживается только до версии 0.5 nginx-push-stream-module. Более свежии версии не поддерживаются, так как для работы Push and Pull разрабатывается специальное решение от «1С-Битрикс».
Еще одна сложность заключается в том, что версия модуля nginx-push-stream-module завязана на версию nginx. Версия моего текущего nginx была 1.12 и мне не удалось собрать из исходников эту же версию nginx, которая бы скомпилировалась с модулем nginx-push-stream-module версии 0.5 или 0.5.4. Поэтому я решил попробовать собрать nginx последней версии с последней версией модуля nginx-push-stream-module.
В конечном счете, чтобы собрать nginx у меня получилась такая конфигурация:
$ ./configure —add-module=../nginx-push-stream-module —with-zlib=./zlib-1.2.11 —with-openssl=./openssl-1.0.2n —with-pcre=./pcre-8.41 —with-http_ssl_module
—with-http_ssl_module — этот модуль нужен обязательно, если на сайте используется https. А для этого модуля нужна openssl библиотека. Но последняя версия (1.1.0) openssl библиотеки не годится, так как с ней nginx не компилируется — это известный баг и пока что нужно использовать старую версию(1.0.2).
—with-zlib — Библиотека нужна для модуля ngx_http_gzip_module. Указывается путь к папке с исходниками библиотеки.
—with-pcre — Библиотека нужна для использования регулярных выражений в директиве location и для модуля ngx_http_rewrite_module. Указывается путь к папке с исходниками библиотеки.
—add-module=../nginx-push-stream-module — подключаем модуль nginx-push-stream-module. Указывается путь к папке с исходниками библиотеки.
То есть, сначала нужно скачать исходники всех библиотек, распаковать их (например в текущей папке) и указать путь к ним.
Итоговый список bash команд (запускать от имени пользователя root ), чтобы собрать nginx со всеми необходимыми модулями:
Во время выполнения команды make могут появиться различные ошибки, в основном это недостающие пакеты для компиляции. В конце статьи я приложил несколько ссылок по решению возможных проблем, из тех, с которыми я столкнулся.
После успешного выполнения команды ./configure , должно получить примерно следующее:
nginx binary file: «/usr/local/nginx/sbin/nginx» — в этом месте будет располагаться новый собранный бинарник, отсюда его нужно будет копировать вместо старого.
После успешного выполнения команды make install (она может выполняться долго), должно получиться примерно следующее:
Если появились какие-то сообщения об ошибках или есть строки красного цвета, значит что-то пошло не так.
Теперь можно проверить, правильно ли собрался nginx, есть ли там указанные модули /usr/local/nginx/sbin/nginx -V :
Таким же образом, можно перед сборкой посмотреть, какие модули были ранее установлены в старом nginx, скопировать их и добавить в список модулей для установки, при компиляции нового бинарника nginx.
Подключение собранного nginx
- положить новый бинарник в рабочую папку вместо старого ( у меня /usr/sbin/nginx)
- проверить и настроить пути к конфигам
- остановить службу nginx
- проверить, что нет ошибок
- перезапустить службу nginx
Список bash команд для подключения нового бинарника, в общем виде:
/path/to/old/ — замените на свой путь к старому бинарнику.
Не удаляйте старый бинарник! Переименуйте его на время тестирования, чтобы вернуть его назад, если возникнут проблемы с работой сайтов.
Новый бинарник подтянет старые файлы конфигурации, однако сразу же проверьте работоспособность своих сайтов.
Но если путь к конфигам отличается от стандартного и не был указан при компиляции — может понадобится прописать путь к старому конфигу.
В моем случае новый бинарник подтягивал конфиг из /usr/local/nginx/conf/nginx.conf , а старые конфиги былы тут /etc/nginx/nginx.conf . Для решения этой проблемы достаточно создать симлинк на старый путь:
Настройка nginx для модуля push and pull
1) В nginx добавить в блок server<> (для виртуального хоста) локейшены из битриксовой документации
2) В nginx добавить общие настройки модуля push and pull.
Нужно создать новый файл в папке с конфигами nginx для виртуального хоста, например push_and_pull.conf и поместить в него настройки. Некоторые строки пришлось закомментировать, так как они нужны только для BitrixVM.
3) Включить модуль push and pull в настройках в админке
Значение параметра На сервер установлена ближе всего к Виртуальная машина 4.4 и выше (nginx-push-stream-module 0.4.0) , поэтому устанавливаем именно этот вариант.
Теперь можно тестировать работу модуля push and pull — сообщения в чате должны приходить мгновенно, а в живой ленте должны появляться изменения (комментарии, просмотры, лайки, записи) без перезагрузки страницы.
Настройка модуля Bitrix NodeJS RTC
Push сервер на основе nginx не справлялся с нагрузкой, которую создавали пользователи облачного сервиса Битрикс24, и поэтому появилась необходимость в разработке нового push сервера — NodeJS RTC, у которого под капотом Node.js. Новый push сервер встроен в BitrixVM версии 7+ и есть инструкция по его настройке. Мне не удалось найти информацию, как его настраивать без использования BitrixVM.
Для любой коробочной версии корпоративного портала, в которой количество активных пользователей намного меньше, чем в облачной версии — вполне хватит старой реализации push сервера на основе nginx.
Заключение
Чтобы запустить модуль push and pull необязательно ставить BitrixVM.
Есть мнение, что сборка из исходников — это слишком простой путь, и что правильнее собрать полноценный deb-пакет, который будет управляться пакетным менеджером. Для такого пакета можно запретить обновление (hold), чтобы впредь не обновлялся.
В данном случае опробована связка Debian + nginx 1.2.0 + nginx-push-stream-module 0.5.4 + bitrix 17.5.8 — все работает.
Источник
Views: 4287 Interactive applicationsInformation listed below is useful when you need to write code for your own client. If you don’t need a new client, but only added interactivity feature into already existing application, find more information here. RT-servers connection is used for creating a truly interactive application: instant application status changes and interface updates without AJAX requests. Application developmentThere are two ways to connect the service: Long polling and websocket. When user enters the site, user’s browser, desktop or mobile application establishes and maintain constant connection with Push-server. It’s recommended to use websocket as the main method for establishing RT-server connection. Long polling is used only for devices without websocket support or when client experiences problems when connecting to websocket. To retrieve server and connectivity data, use REST command pull.application.config.get For connecting to the server, get a required type (for example, websocket_secure) in server settings (server field) for required connection. Next, Websocket connection example for Bitrix24 Self-hosted push-server: wss://rt.bitrix24.com/sub/?CHANNEL_ID=46a437d2336d4a88e4e9b3cd956ecf45:6221e0eb48981fce67cf4756e82e8102.7910bb25e660bf211fdec15e33c5e25e4c3b644a/fb9f7e13dc3d595c5aefe1a0216c27a2.2887eebc6ae160713a732893462dce9d8e23a7b0 Websocket connection example for Bitrix24 Cloud push-server: wss://rtc-cloud-ms1.bitrix.info/subws/?CHANNEL_ID=beb502091dfc9b93d7fd648aa4ec332e%3A7cc478c89de71ec78bf4820d3d814a3e.4f5466742ca1e59e263fee732a7dbe002889ba91%2F1ab4f7a440cea35a1abccd5c2566c688.b33914ef342e5cd21e4fbcf4ac92acd2e9ea3755&clientId=fcda45d0859442735f07b8bb5825ded1 Each channel operation time is limited by 12 hours. You must track the expiration time and execute repeated request pull.application.config.get when one of channels operation time has expired. To access channel history, add special get-tags to the address specified above: General format for commands from serverServer version 3 and lower, when queried, receives text as follows: #!NGINXNMS!#{"id":320146,"mid":"14526134350000000000320146","channel":"6221e0eb48981fce67cf4756e82e8102","tag":"672","time":"Thu, 29 Jun 2017 09:50:16 GMT","text":{...},"extra":{...}}}#!NGINXNME!# #!NGINXNMS!#{"id":320147,"mid":"14526134350000000000320147","channel":"6221e0eb48981fce67cf4756e82e8102","tag":"673","time":"Thu, 29 Jun 2017 09:50:17 GMT","text":{...},"extra":{...}}}#!NGINXNME!# To handle the command, you must get its content and convert it to JSON format. Commands are located in-between controlling phrases Starting from server version 4, use GET parameter [ {"id":320146,"mid":"14526134350000000000320146","channel":"6221e0eb48981fce67cf4756e82e8102","tag":"672","time":"Thu, 29 Jun 2017 09:50:16 GMT","text":{...},"extra":{...}}}, {"id":320147,"mid":"14526134350000000000320147","channel":"6221e0eb48981fce67cf4756e82e8102","tag":"673","time":"Thu, 29 Jun 2017 09:50:17 GMT","text":{...},"extra":{...}}} ] JSON command structure has the following unified look: { "id" : 320146, "mid" : "14526134350000000000320146", "channel" : "6221e0eb48981fce67cf4756e82e8102", "tag" : "672", "time" :"Mon, 03 Oct 2017 06:36:01 GMT", "text" : { "module_id" : "main", "command" : "user_online", "params" : { ... }, "extra" : { "server_time": "2017-10-03T08:36:01+02:00", "server_time_unix": 1507012561, "server_time_ago": 0, 'revision': 16, 'revisionMobile': 1, "channel" : "6221e0eb48981fce67cf4756e82e8102" } } Where:
Error handlingVarious errors can occur when handling server. Its important to process errors correctly to avoid being blocked for possible suspicious activity. When server connection results in errors, incrementally increase connection time:
When errors occur more than 4х times during websocket handling, it’s recommended to start using Long polling. Most likely is the situation when client’s computer has websocket protocol blocked (exit code websocket 1006 and 1008). Full transition to the Long polling is reasonable when you weren’t able to connect to websocket at all. In cases, when previously you had successful connections, its reasonable to temporarily switch to Long polling for 10 — 30 minutes. Format of incoming commands for managing the connectionTo successfully manage Push & Pull protocol, ensure processing of control commands. channel_expireCommand for expiration of channel worktime. { "module_id" : "pull", "command" : "channel_expire", "params" : { "action" : "reconnect", "channel" : { "id" : "46a437d2336d4a88e4e9b3cd956ecf45.7910bb25e660bf211fdec15e33c5e25e4c3b644a", "type": "shared" }, "new_channel": { "id": "fb9f7e13dc3d595c5aefe1a0216c27a2.2887eebc6ae160713a732893462dce9d8e23a7b0", "start": "2017-06-28T09:57:48+02:00", "end": "2017-06-28T21:57:48+02:00", "type": "shared" } } } Parameters
Command handling In case of
config_expire и server_restartCommand for server settings update { "module_id" : "pull", "command" : "config_expire", "params" : {} } Command handling In case of config_expire or server_restart commands, disconnect from server and after arbitrary period of time (from 10 to 120 seconds), request new channel data via REST pull.application.config.get. Then, re-establish server connection.
|