Установка модуля tandem/chat (обращения и групповой чат)

Содержание

Требования к серверу

На сервере должны быть установлены:

Для запуска 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!