Corrige lentidão do frontend com múltiplos clientes simultâneos
---
- Substituída consulta individual por stream (supervisorctl status {p}-{id} × 5) por uma única chamada supervisorctl status que retorna todos os programas de uma vez, com cache de 3s em fetchAllStatuses();
- Adicionado endpoint GET /api/streams/statuses que retorna os statuses de todos os streams em uma resposta batch;
- Frontend alterado para usar o endpoint batch em vez de N requests paralelos por ciclo de polling;
- Token de sessão HMAC-SHA256 em auth.ts agora é computado uma vez e cacheado no módulo, eliminando operações de crypto a cada requisição;
- Rolling session no middleware limitado a rotas de página, removendo overhead de Set-Cookie em respostas de API e HLS;
---
This commit is contained in:
+3
-8
@@ -135,14 +135,9 @@ export default function GalleryPage() {
|
||||
|
||||
const fetchStatuses = useCallback(async (list: Stream[]) => {
|
||||
if (list.length === 0) return
|
||||
const results = await Promise.all(
|
||||
list.map(async (s) => {
|
||||
const res = await fetch(`/api/streams/${s.id}/status`)
|
||||
const data = await res.json()
|
||||
return [s.id, data] as const
|
||||
})
|
||||
)
|
||||
setStatuses(Object.fromEntries(results))
|
||||
const res = await fetch("/api/streams/statuses")
|
||||
const data: Record<string, Record<string, string>> = await res.json()
|
||||
setStatuses(data)
|
||||
}, [])
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
Reference in New Issue
Block a user