Реал-тайм через SSE (push-to-invalidate): живые приглашения/партии, авто-обновление без перезагрузки
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -45,3 +45,15 @@ HTTPS твоими сертификатами и проксирует трафи
|
||||
|
||||
> Telegram-вход требует HTTPS-домен: у BotFather `/setdomain` укажи оба домена
|
||||
> (`forbiddenstars.ru` и `forbidden-stars.ru`).
|
||||
|
||||
## Реал-тайм (SSE)
|
||||
|
||||
Приложение шлёт события «данные изменились» через SSE: `GET /api/events`
|
||||
(`text/event-stream`). Это обычный HTTP — проходит через Caddy и SSH-туннель без доп.
|
||||
настроек, КРОМЕ одного: для пути `/api/events` в `Caddyfile` выделен отдельный `handle`
|
||||
**без `encode`** и с **`flush_interval -1`** (иначе сжатие/буферизация задержат поток).
|
||||
После правки `Caddyfile` на VPS: `sudo systemctl reload caddy` (или `restart`).
|
||||
|
||||
Шина событий — **in-memory**, рассчитана на один процесс (uvicorn `--workers 1`, как в
|
||||
контейнере). Если когда-нибудь поднимешь несколько воркеров/реплик — шину нужно вынести во
|
||||
внешний брокер (Redis pub/sub), иначе события увидит только тот воркер, что принял мутацию.
|
||||
|
||||
+23
-4
@@ -8,15 +8,34 @@
|
||||
# приложению добавляет X-Forwarded-Proto=https / X-Forwarded-For / Host —
|
||||
# приложение это учитывает (uvicorn --proxy-headers). Положи файл в /etc/caddy/Caddyfile.
|
||||
# Сертификаты — см. deploy/vps/README.md (fullchain = leaf + промежуточные одним файлом).
|
||||
#
|
||||
# SSE (/api/events): отдельный handle БЕЗ encode и с flush_interval -1 — иначе сжатие/
|
||||
# буферизация задержат поток событий (реал-тайм перестанет работать).
|
||||
|
||||
forbiddenstars.ru {
|
||||
tls /etc/caddy/certs/forbiddenstars.ru/fullchain.pem /etc/caddy/certs/forbiddenstars.ru/privkey.pem
|
||||
encode zstd gzip
|
||||
reverse_proxy 127.0.0.1:9000
|
||||
@sse path /api/events
|
||||
handle @sse {
|
||||
reverse_proxy 127.0.0.1:9000 {
|
||||
flush_interval -1
|
||||
}
|
||||
}
|
||||
handle {
|
||||
encode zstd gzip
|
||||
reverse_proxy 127.0.0.1:9000
|
||||
}
|
||||
}
|
||||
|
||||
forbidden-stars.ru {
|
||||
tls /etc/caddy/certs/forbidden-stars.ru/fullchain.pem /etc/caddy/certs/forbidden-stars.ru/privkey.pem
|
||||
encode zstd gzip
|
||||
reverse_proxy 127.0.0.1:9001
|
||||
@sse path /api/events
|
||||
handle @sse {
|
||||
reverse_proxy 127.0.0.1:9001 {
|
||||
flush_interval -1
|
||||
}
|
||||
}
|
||||
handle {
|
||||
encode zstd gzip
|
||||
reverse_proxy 127.0.0.1:9001
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user