Tengo una página en la que quiero que mi secuencia de comandos le informe al servidor que el usuario se desconectó cuando se cerró el navegador/pestaña/página.
$(document).ready(function() { // Inform the server that the user went online setStatus('online'); // Inform the server that the user went offline $(window).on('beforeunload', function() { setStatus('offline'); }); // Inform the server that the user went offline $(window).on('unload', function() { setStatus('offline'); }); }); async function setStatus(status) { let { data } = await axios.post('/status', { status: status }); } La parte donde tengo setStatus('online'); funciona, pero parece que nunca puedo establecer el estado en fuera de offline cuando cierro la página/pestaña/navegador.
Mirando a mi alrededor, encontré esta muy buena respuesta : solo tenía que poner esto en mi archivo server.js :
peer.oniceconnectionstatechange = function() { if(peer.iceConnectionState == 'disconnected') { console.log('Disconnected'); } }Toma unos segundos antes de que registre que el compañero se ha caído, pero al menos siempre está disparando y eso es lo suficientemente confiable para mí.