Skip to content

summrh/blablachat

Repository files navigation

blablachat

В качестве пет-проекта написал чат, стараясь использовать инструменты и технологии, с которыми счёл полезным для себя поработать:

Express
socket.io
RabbitMQ для pub-sub с сохранением истории сообщений
MongoDB + Mongoose для хранения пользователей
JWT
В Docker завернул локальный кластер на родном модуле cluster. Несмотря на JWT, сделал липкую балансировку по адресу клиента, чтоб socket.io при необходимости мог работать через long-polling. Вёрстку и стили взял чужие, т.к. не претендую на фронт.

Есть CRUD на юзеров. Весь его можно Postman'ом пощупать с токеном админа в Authorization-хедере, в самом чате используется лишь отчасти. Прикрутил больше в качестве демонстрации умения крудописания. Токен можно вытащить из sessionStorage браузера после входа.

Установка и запуск

git clone https://github.com/summrh/blablachat.git

Подсунуть .env-файл вида:
NODE_ENV=dev
PORT=3000
MONGO_URL=mongodb://localhost:27017/chat
RABBITMQ_URL=amqp://localhost:5672
SOCKETIO_URL=/
ALLOWED_DOMAINS=http://localhost:3000
JWT_KEY={длинная случайная строка}
MAILER_USER={аккаунт@gmail.com для рассылки паролей}
MAILER_PASS={пароль от него}
LOG_LEVEL=info

docker-compose up
Вначале посыпятся ошибки попыток подключения к RabbitMQ - это нормально (у меня контейнер с ним долго грузится).

Регистрация

http://localhost:3000/signup
Пароль упадёт в консоль сервера и будет отправлен на указанную почту.
Для доступа к CRUD понадобится админ. Для его создания нужно использовать прописанный в конфиге гугловский email, предназначенный для рассылки паролей. Нужно просто зарегистрироваться с этим адресом, и у созданного юзера атоматом установится роль админа.

Вход в чат

http://localhost:3000/

CRUD

http://localhost:3000/users
Тело запросов - raw JSON.
POST доступен для всех, остальное - только админу.
Для GET есть параметр ?all=true, который отобразит всех пользователей, включая удалённых.
PUT выполняется по email из тела запроса.
Для DELETE нужно добавить _id пользователя после слеша, например:
http://localhost:3000/users/5e6e6197b6e96d0174d3e134

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors