Необходимо создать чат-сервер.
Сервис должен выполнять следующий сценарий:
- Пользователь авторизуется в систему через Google
- После авторизации пользователь с помощью API может получить список чатов, а также создать новый чат, отредактировать или удалить существующий
- Пользователь может отправить новое текстовое сообщение с помощью API. После добавления сообщения в базу сервис должен добавить задачу в очередь на рассылку данного сообщения всем пользователям подключенным к websocket
- Сервис поддерживает подключение по websocket для получения информации о новых сообщениях
Требования:
- Для реализации авторизации использовать код из задания 1
- Использовать PostgreSQL в качестве базы данныхи
- Использовать Nats JetStream в качестве инструмента для реализации очереди
- Использовать идеологию REST при проектировании методов API
- Склонировать репозиторий
git clone https://github.com/Yury132/Golang-Task-3.git
- Установить PostgreSQL в Docker контейнер, используя docker-compose.yml файл из проекта
-
Скопировать docker-compose.yml в новую папку "postgresql"
-
Выполнить в терминале команду
docker compose up
- Подключиться к базе данных PostgreSQL (Например, через DBeaver)
POSTGRES_DB: mydb
POSTGRES_USER: root
POSTGRES_PASSWORD: mydbpass
Port: 5432
Host: localhost
- Установить NATS в Docker контейнер командами
docker pull nats:latest
docker run -p 4222:4222 -ti nats:latest -js
- Скопировать полученный файл .env по пути Golang-Task-3/internal/config
- Запустить веб-приложение командой
go run cmd/main.go
- Используя разные браузеры, например, Яндекс Браузер и Google Chrome, перейти по адресу
http://localhost:8080/
- Авторизоваться через Google под разными аккаунтами
- Нажать на кнопку "Чаты"
- Создать чат с любым названием
- Авторизованным пользователям перейти в один и тот же чат и начать обмениваться сообщениями
- При необходимости название чата можно изменить
- Существующие чаты можно удалять, нажимая на крестик рядом с названием конкретного чата