¿Cómo detectar cuándo el navegador acelera los temporizadores y la desconexión de Websockets después de que un usuario abandona una pestaña o apaga la pantalla? (javascript)

Contexto Un juego enviado como una aplicación web progresiva que tiene temporizadores ( setTimeout, setInterval) y conexiones websocket para obtener comunicación en tiempo real. Qué está pasando Todo está bien mientras el usuario permanezca en la aplicación. Pero cuando el usuario va a otra...