1) czy da się wykryć całkowite wyjście z strony, zamiast przejścia na inną podstroną
Nie, można jedynie wykryć, czy strona jest widoczna, czy nie – https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API
2) jeśli się nie da normalnie w js'ie to czy da się coś ogarnąć ciekawego w socket.io
socket.io to wciąż zwykły JS. Tutaj możliwości są jeszcze mniejsze, bo da się jedynie wykryć, czy jakieś połączenie nie zostało zerwane – co akurat wcale nie musi oznaczać, że karta została zamknięta.