Contar utilizadores online

1 resposta
Bruno_Cardoso

Boas!

Alguem sabe como contar os utilizadores que estao neste momento a ver uma pagina?

Estive à procura da web e encontrei o seguinte exemplo, mas isto não funciona lá muito bem porque se eu fechar o browser ele não decrementa o numero de sessoes.. se alguem tiver uma alternativa agradecia..

package org.thegathering.forum;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class SessionCounter implements HttpSessionListener {

	private static int activeSessions = 0;

	public void sessionCreated(HttpSessionEvent se) {
		activeSessions++;
	}

	public void sessionDestroyed(HttpSessionEvent se) {
		if(activeSessions > 0)
			activeSessions--;
	}

	public static int getActiveSessions() {
		return activeSessions;
	}
}

Obrigado

1 Resposta

A

Amigo,
você pode usar uma opção do javascript colocando assim no body da sua página.

<body onunload="decrementaSessao();">

<script>
function decrementaSessao(){
  location.href("http://server/servletDecrement");
 alert("A sua sessão foi fechada com  sucesso!!");
}
</script>
O servlet é responsável em decrementar a sessão e também de invalidar a sessão do usuário(session.invalidate()). O resultado html dele pode uma página sua com a famosa mensagem "Sua sessão foi fechada corretamente", etc .. Assim você garante que não ficou nenhuma sessão aberta. Você pode tratar ainda, fechamento da tela com alt+f4, etc.. para garantir que sempre será chamado seu servlet antes de fechar a tela. Eu normalmente uso um alert depois que redirecione, assim garanto que o servlet foi chamado e a sessão fechada. É um incomodo para o usuário ter que click no OK da mensagem, mas dá tempo para o servlet executar. Sem algo deste tipo, a tela fechará e antes de executar o servlet, o request morre. Falou...
Criado 14 de agosto de 2003
Ultima resposta 14 de ago. de 2003
Respostas 1
Participantes 2