Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Technoghost

Controle de Usuários logados

Recommended Posts

Bem, o problema é o seguinte, necessito criar um controle que limite o nº de usuários logados no sistema.Inicialmente pensei em uma tabela de usuários onde seria guardado codigo, usuário e senha e uma segunda tabela, onde ficaria armazenado os usuários logados.Ai seria fácil se o usuário logasse no sistema eu daria um insert na tabela de usuarios logados e para verificar se o limite foi atingido utilizaria um COUNT.Ao fechar o sistema eu removeria o registro da tabela de usuários logados.Lindo maravilhoso, porém há um grande problema, se o PC do usuário travar, ou acabar a luz, o procedimento que remove o usuário logado não será executado e fico com um registro sobrando na tabela de usuários logados..Algum dos colegas já conseguiu contornar essa situação?Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desenvolvi algo assim mesmo como você precisa.No meu caso usei socket, sendo que quando user vai acessar, ele se conectar via socket em um servidor que ficar rodando, caso já tenha o limite de users logados, não é permitido o acesso, só que antes de acessar eu verifico se todos os usuários ainda estão on-line, caso algum não esteja, é removido, se um user sai do sistema, é enviado para o socket o pedido de saída, sendo que assim ele sempre mantem atualizado a lista... Funciona muito bem...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O servidor faz uma solicitação para o cliente, e o cliente responde... no caso o servidor pode enviar uma mensagem qualquer, tipo "TÁ VIVO" no caso o cliente recebe a solicitação, interpreta e responde "TÔ VIVO" sendo assim ele deixa o cliente como ativo ainda.Somente precisa cuidar para o controle não ser feito por nome de usuário, pq senão o mesmo user abre duas vezes o sistema, sai de um e caí os dois do servidor, precisa controlar pelo ID de conexão do socket, um n° que é gerado automaticamente pelo socket.E ainda precisa cuidar o tempo de espera de resposta do cliente para o servidor, no caso fiz com que seja solicitado se o cliente esteja vivo ainda, ele deve de responder em 0,5 segundos, caso contrário é removido da listagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se fizer um programa de exemplo, vai ser o próprio sistema... Levei um bom tempo até descobrir como fazer...Ele não fica fazendo nenhuma verificação por tempo, somente faz verificação quando um user tenta se logar, no qual ele verifica todos da lista, e quando o user pede para sair do sistema, neste caso ele somente remove o mesmo da listagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.