Galera quebrei a cabeça hoje e não cheguei a lugar nenhum, seguinte tenho um servlet com uma thread rodando até ai tudo bem, esse thread verfica algumas coisas e vai exbindo na tela do usuario até ai tudo bem tbm.
Problema, se o usuário fechar o navegador gostaria de adiconar a linha sobre esse fato, mas não consigo identificar q isso ocorre, já tentei usar session, mas mesmo fazendo a verificação a session retorna true, só fica false se der timeout, oque demora 10 minutos, e a thread tbm não gera exeção mesmo que o usuário fecha o navegador ele continua rodando no servidor.
Alguém já teve que fazer isso identificar que o usuario fechou o navegador ?
Só se você fizer seu site com um frame e uma página que tem um javascript que fica constantemente efetuando uma transação que não faz nada no seu servidor - a única coisa que ele faz é manter a sessão viva enquanto o navegador estiver no ar. ( < meta reload > não funciona mais direito em vários browsers que desabilitam reload por timeout … )
Impossível fazer isso com Session, Request, etc… Tudo isso são objetos presentes no servidor, e o navegador é o cliente. Talvez dê pra fazer isso com JavaScript, mas como não conheço muito, não posso afirmar nada…
Fechar o browser e mantê-lo aberto e sem atividade é o mesmo para o servidor.
A solução do thingol é a mais indicada, defina um timeout muito pequeno e faça um frame invisível que fique “pingando” o servidor, ou seja, fazendo request por uma determinada página.
Quando o navegador fechar, a sessão vai expirar rapidamente.
Só testei com browser IE… existe um evento em js que starta um evento ao fechar do browser… capture este evento. Ele starta uma alert automaticamente… dentro dele, vc abre uma outrra janela e chame a função necessária… o evento é onWindowClose… não estou com o código aqui… mas entre em contato por email que eu lhe mando… rodrigo.allemand@gmail.com