socket.io forzar una desconexión sobre el sondeo XHR
Tengo una aplicación cliente / servidor que utiliza nodejs en el servidor y socket.io como mecanismo de conexión. Por razones relevantes para mi aplicación, quiero tener solo una conexión activa por navegador y rechazar todas las conexiones de otras pestañas que puedan abrirse más adelante durante la sesión. Esto funciona muy bien con WebSockets, pero si el navegador no admite WebSockets y en su lugar se utiliza el sondeo XHR, la desconexión nunca ocurre, por lo que si el usuario simplemente actualiza la página, esto no se interpreta como una reconexión (tengo un retraso para reconexión y restauración de la sesión), pero como una nueva pestaña, que finaliza cuando la conexión se rechaza porque la conexión anterior realizada por esta misma pestaña aún está activa.
Estoy buscando una manera de finalizar efectivamente la conexión desde el cliente cada vez que se produce una actualización. He intentado vincular a labeforeunload
y llamandosocket.disconnect()
en el lado del cliente, y también enviando un mensaje comosocket.emit('force-disconnect')
y desencadenando la desconexión del servidor sin éxito. ¿Me estoy perdiendo de algo? ¡Aprecio tu ayuda!
he leídoesta pregunta y no pudo encontrarlo útil para mi caso particular.