quoter/README.md

34 lines
2.1 KiB
Markdown
Raw Normal View History

2023-10-03 13:29:31 +00:00
## Presence
"Присутствие" - это сервер для пересылки сообщений в реальном времени. Текущая версия использует SSE-транспорт.
2023-09-28 10:12:07 +00:00
### ENV
- API_BASE
2023-10-06 10:50:20 +00:00
- AUTH_URL
2023-10-02 09:22:04 +00:00
- REDIS_URL
2023-10-03 13:29:31 +00:00
### Как это работает
2023-10-19 14:43:00 +00:00
При каждом обращении к `/connect` создаётся отдельная асинхронная задача с подписками на Redus PubSub каналы, позволяя пользователям получать только те уведомления, которые предназначены непосредственно для них.
Каналы Redis:
- `reaction`
- `shout`
- `follower:<author_id>`
2023-10-16 14:44:19 +00:00
- `chat:<chat_id>`
2023-10-19 14:43:00 +00:00
Сервис пересылает сообщения из этих каналов, которые предназначены пользователю, подписавшемуся на Server-Sent Events (SSE) по адресу `/connect`. Для авторизации подписки используется токен, который передается клиентом в заголовке `Authorization`, или в пути `/connect/{token}`, или в переменной запроса `/connect/?token={token}`.
При завершении подключения, все подписки автоматически отменяются, так как они связаны с конкретным подключением. Если пользователь снова подключается, процесс подписки повторяется.
### Формат сообщений межсервисной коммуникации
2023-10-16 14:44:19 +00:00
2023-10-19 14:43:00 +00:00
Между сервисами пересылаются целые сущности и типизация действий с ними, поля стандартного redis-сообщения:
2023-10-16 14:44:19 +00:00
2023-10-19 14:43:00 +00:00
- `action` наименование операции, примеры: "create" | "delete" | "update" | "join" | "left"
- `payload` json одной из сущностей: Reaction | Shout | Author | Chat | Message