c9b3ebc179a8afd3ee522b0a313ed4d63caf8219
El televisor no es un equipo dedicado: es una ventana de un computador de uso mixto. Si esa ventana queda tapada o minimizada, Chrome congela sus relojes a ~1 tic por minuto, el sondeo se paraliza y los llamados intermedios no suenan (reproducido y documentado en la bitácora el 23/08 a las 12:11). Los eventos de red no se congelan. La pantalla se suscribe ahora al canal SSE que ya existía —todos los caminos de llamado actualizan sse_ping_at: llamar, rellamar, cambiar_estado y llamar_desde_espera— y cada cola_update dispara un refresco inmediato, aunque la pestaña esté de fondo. El sondeo de 1 s queda de respaldo, y el vigía de congelamiento anota en la bitácora si ambos fallan. Al verificar en producción (sin dar por hecho que el canal servía), el SSE resultó estar MUDO: cero bytes en 17 segundos, ni el keep-alive. Causa: el arranque del ERP deja un búfer de salida activo —los jsonOk() de _helpers hacen ob_clean(), que lo confirma— y sse_turno.php usaba flush() a secas, que no lo atraviesa: todo lo emitido quedaba atrapado. Se drena el búfer al iniciar el stream (ob_end_clean + ob_implicit_flush). Verificado ejecutándolo contra la base real: emite cola_update de inmediato. La suite vigila que la suscripción exista (17 verificaciones de voz). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Description
No description provided
6.1 MiB
Languages
PHP
84.8%
JavaScript
6.4%
HTML
5.9%
Shell
1.4%
CSS
0.9%
Other
0.5%