2.1 KiB
Presence
"Присутствие" - это сервер для пересылки сообщений в реальном времени. Текущая версия использует SSE-транспорт.
ENV
- API_BASE
- AUTH_URL
- REDIS_URL
Как это работает
При каждом обращении к /connect
создаётся отдельная асинхронная задача с подписками на Redus PubSub каналы, позволяя пользователям получать только те уведомления, которые предназначены непосредственно для них.
Каналы Redis:
reaction
shout
follower:<author_id>
chat:<chat_id>
Сервис пересылает сообщения из этих каналов, которые предназначены пользователю, подписавшемуся на Server-Sent Events (SSE) по адресу /connect
. Для авторизации подписки используется токен, который передается клиентом в заголовке Authorization
, или в пути /connect/{token}
, или в переменной запроса /connect/?token={token}
.
При завершении подключения, все подписки автоматически отменяются, так как они связаны с конкретным подключением. Если пользователь снова подключается, процесс подписки повторяется.
Формат сообщений межсервисной коммуникации
Между сервисами пересылаются целые сущности и типизация действий с ними, поля стандартного redis-сообщения:
action
наименование операции, примеры: "create" | "delete" | "update" | "join" | "left"payload
json одной из сущностей: Reaction | Shout | Author | Chat | Message