Lo puedes hacer con una cookie sin fecha de expiración. Se borra al cerrar el navegador.
Tendrás que meterle alguna lógica a la parte del cliente tipo:
Cada minuto compruebo si existe la cookie. Si existe mando una petición al servidor indicándolo. Y en el servidor una lógica tipo: Si no se envió la cookie, el usuario se desconectó.
https://developer.mozilla.org/es/docs/DOM/document.cookie https://www.w3schools.com/js/js_cookies.aspPor el otro lado tienes sessionstorage para lo de la pestaña.
var respuesta = "Si";
sessionStorage['estaElScriptCorriendo'] = respuesta;
var obtenerRespuesta = sessionStorage['estaElScriptCorriendo'];
console.log(obtenerRespuesta);
Ten cuidado con ciertos caracteres y objetos. Si los usas tienes que parsear.