Установка модуля tandem/chat (обращения и групповой чат)
Содержание
Требования к серверу
На сервере должны быть установлены:
- redis >= 6.2 (Пример установки на ubuntu)
- supervisor (Пример установки на ubuntu)
Для запуска nodejs сервера необходима установка npm пакетов:
- socket.io@4.1.2
- ioredis@4.27.2
- fs@0.0.1-security
- https@1.0.0
- http@0.0.1-security
Команда установки пакетов:
npm install socket.io@4.1.2 ioredis@4.27.2 fs@0.0.1-security http@0.0.1-security https@1.0.0
Настройка .env файла
В папке сайта находится файл .env, в котором прописаны настройки проекта. Требуется прописать настройки redis в этом файле:
BROADCAST_DRIVER=redis - значение должно быть redis
REDIS_CLIENT=predis - значение должно быть predis
REDIS_HOST=127.0.0.1 - адрес redis
REDIS_PASSWORD=null - пароль redis
REDIS_PORT=6379 - порт redis
После настроек требуется почистить кеш настроек выполнив команду:
php artisan config:clear
Настройка модуля
Необходимо опубликовать файлы nodejs сервера и настроек, для этого используется команда:
php artisan tandem-chat:publish
В папке проекта /resources/js
появятся файлы chat-server_config.json
(файл конфигураций nodejs сервера) и chat-server.js
(nodejs сервер).
Для работы сервера требуется произвести настройки в файле конфигураций nodejs сервера:
{
"redis": {
"port": 6379, - порт redis
"host": "localhost", - адрес redis
"password": null - пароль redis
},
"secure": false, - если Вы используете SSL соединение, то требуется указать true иначе false
"cert_path": "", - путь к ssl сертификату (указывается при secure true)
"cert_key_path": "", - путь к ключу ssl сертификата (указывается при secure true)
"server_port": 3000, - порт на котором будет запущен nodejs сервер (порт должен быть доступен всем)
"subscribe_channels": [
"laravel_database_tandem-chat" - Канал прослушки. Tребуется соблюдать prefix {APP_NAME}_database_{channel}. Примеры приведены в таблице, ниже.
]
}
Если APP_NAME указан на криллице, то такое наименование преобразуется в транслит.
Примеры переводов и название канала прослушки:
APP_NAME (в файле .env) | Перевод | Канал прослушки чата |
---|---|---|
ЛК |
lk | lk_database_tandem-chat |
"Личный кабинет" |
licnyi_kabinet | licnyi_kabinet_database_tandem-chat |
Tandem-Test |
tandem_test | tandem_test_database_tandem-chat |
"MSU recognition" |
msu_recognition | msu_recognition_database_tandem-chat |
"Тандем Личный кабинет" |
tandem_licnyi_kabinet | tandem_licnyi_kabinet_database_tandem-chat |
На этом настройки nodejs сервера завершены и остается настроить файл конфигурации по пути /config/tandem-chat.php
[
/**
* Настройки чата
**/
'chat' => [
'server_port' => 3000, - порт на котором запущен nodejs сервер (указывался ранее в chat-server_config.json)
'server_ip' => 'localhost', - адрес сервера,
],
...
]
Запуск nodejs сервера
Для работы чата в режиме realtime необходимо чтобы nodejs сервер был постоянно включен и прослушивал redis. Для этого можно установить supervisord
и добавить ему 1 процесс с выполнением команды:
node {путь до проекта}/resources/js/chat_server.js
Тем самым сервер будет постоянно запущен. После перезагрузки машины он также будет работать и realtime не прекратится.
Также можно постоянно запускать команду в фоне и использовать команду node chat_server.js
в папке resources/js
.
Настройка supervisor
После установки supervisor необходимо создать файл конфигурации для работы с nodejs сервером. Supervisor нужен для запуска процесса с сервером nodejs в случае сбоев и перезагрузок сервера на котором все установлено.
В папке /etc/supervisor/conf.d
требуется создать файл с любым наименованием и расширением .conf
, например: io-chat-worker.conf
. Содержание данного файла конфигураций приведено ниже:
[program:{НАЗВАНИЕ, например: io-chat-worker}]
process_name=%(program_name)s_%(process_num)02d
command=node {ПУТЬ К ПРОЕТУ, например: /var/www/html}/resources/js/chat-server.js
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user={ПОЛЬЗОВАТЕЛЬ КОТОРЫЙ БУДЕТ ВЫПОЛНЯТЬ ПРОЦЕСС, например: root}
numprocs=1
redirect_stderr=true
stdout_logfile={ПУТЬ ДЛЯ ХРАНЕНИЯ ЛОГОВ, например: /home}/chat-worker.log
stopwaitsecs=3600
После требуется сохранить этот файл и проверить файлы конфигураций supervisor:
sudo supervisorctl reread
Затем обновить процессы и запустить новый процесс:
sudo supervisorctl update && sudo supervisorctl start io-chat-worker:*
На этом процесс установки и настройки модуля tandem/chat завершен и все действия в чатах будут в режиме realtime!