.gitea/workflows | ||
src | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
Dockerfile | ||
nginx.conf.sigil | ||
README.md |
Presence
"Присутствие" - это сервер для пересылки сообщений в реальном времени. Текущая версия использует SSE-транспорт.
ENV
- API_BASE
- AUTH_URL
- REDIS_URL
Как это работает
При каждом обращении к /connect
создаётся отдельная асинхронная задача с подписками на Redus PubSub каналы
new_reaction
new_shout
followers:<author_id>
chat:<chat_id>
После подписки на эти каналы, сервис начинает пересылать сообщения из этих каналов. Он пересылает только те сообщения, которые предназначены пользователю, подписавшемуся на Server-Sent Events (SSE) по адресу /connect
. Для авторизации подписки используется токен, который передается в заголовке Authorization
.
Таким образом, приложение обеспечивает реализацию механизма подписки и пересылки сообщений, позволяя пользователям получать только те уведомления, которые предназначены непосредственно для них.
При завершении подключения, все подписки автоматически отменяются, так как они связаны с конкретным подключением. Если пользователь снова подключается, процесс подписки повторяется.