Archivos Cambios en vivo y carpetas grandes
Cambios en vivo y carpetas grandes
En esta página
En el momento
La página escucha GET /events, un flujo de server-sent events, leído con fetch para que lleve tus headers. Cada cambio se le cuenta a cada quien solo hasta donde puede verlo: las carpetas donde pasó que puede listar, y las entradas que puede leer. No se envían nombres; la página pide lo que muestra, como siempre.
<FileDrive>, mountDrive y cada hook bajo un DriveProvider vuelven a pedir un cuarto de segundo después de un cambio, una vez para los cambios que llegan juntos. Tras un corte se conecta de nuevo, un poco más tarde cada vez. live={false} lo apaga.
const stop = client.watch((event) => {
// { by: 'bea', at: '…', folders: ['<id>'], entries: ['<id>'] }
if (event.folders.includes(current)) reload();
});Más de un proceso
Un cambio hecho por este proceso se avisa al instante. Uno hecho por otro proceso sobre el mismo store se ve por su revisión, que guardan SQLite y Postgres, mirada cada dos segundos mientras alguien escucha (live: { poll }). Un store sin revisión solo avisa los cambios de este proceso.
Detrás de un proxy
- Cada 25 segundos va una línea vacía, para que un proxy no cierre el flujo por estar callado. Deja que una petición dure más que eso:
proxy_read_timeout 1hen nginx. - La respuesta dice
x-accel-buffering: noycache-control: no-transform, para que nginx y la compresión no la retengan. - En una plataforma que corta una petición a los pocos segundos (funciones serverless), la página se reconecta al cortarse, y lo que cambie entretanto se ve en la siguiente. O apágalo con
live: false.
Carpetas grandes
Desde 200 entradas, la lista y la cuadrícula ponen en la página solo lo que se ve y unas filas alrededor, con el espacio del resto guardado arriba y abajo, así que la barra de desplazamiento mide lo que mide todo. Las filas se miden al mostrarse, y las columnas de la cuadrícula siguen su ancho.
El teclado las recorre todas como antes: una flecha, Inicio o Fin traen primero a la vista la que toca, porque a un lector de pantalla se le dice la actual. Cada una dice dónde está entre todas (aria-posinset, aria-setsize). Ctrl+A selecciona todas, no solo las de la página, y las direcciones de las imágenes se piden solo para las que se muestran.