Ir para conteúdo
Fórum Script Brasil
  • 0

Testar conexão do cliente


Mrk3004

Pergunta

Eu tenho um sistema de controle de conexões feito em php que funciona em conjunto com um firewall .

O cliente acessa a pagina > faz login > se o login estiver correto o servidor libera a conexão com a internet para o cliente e redireciona para uma pagina.

O problema é que ao liberar a conexão ocorre um pequeno delay para ela ser de fato funcionar, então é necessário que se aguardar entre 3 ~ 7 segundos, do contrário o cliente vai cair em uma 404. Eu criei uma pequena barra de progresso que conta de 0 até 100 e resolve esse problema.

Já uso esse sistema a algum tempo, mas gostaria de melhora-lo. O que tenho em mente, é substituir essa barra (que leva cerca de 10 segundos para chegar a 100 e redirecionar o cliente) por uma checagem de conexão real, assim poderia liberar o cliente mais rapidamente.

Por exemplo:

>> if cliente logou >> ping google.com

>> while google.com não responde >> tentar novamente

>> if pingou >> redirecionar

O problema é que não encontrei nenhuma forma de acessar uma pagina ao lado do cliente, e não do servidor.

Isso foi o que pensei, mas se tiver alguma outra ideia, ou solução para essa, ela será bem vinda, o importe é apenas verificar se o cliente realmente tem acesso a internet ou não.

Muitíssimo obrigado.

Editado por Viny Games
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Encontrei uma solução usando apenas javascript e html, ficou show!

Funciona com duas funções, uma para inserir dinamicamente uma imagem oculta dentro do<body> e checar se ele carregou ou não, e outra para receber o valor da primeira função e decidir o que fazer. Se o return for false, a função será executada novamente até que se consiga um true, que redireciona a pagina.

Fiz alguns testes aqui e parece que tudo está bem, vou implementar no servidor de produção pra ver como reage. Sugiro mover este tópico para a área de javascript, já que fugiu totalmente da ideia inicial.

Bom, na minha concepção conhecimento deve ser livre, então se alguém de repente precisar, está ai:

<!doctype html>
<html>
<head>
<title>Login Test</title>
<meta charset="UTF-8">
&lt;script>
var testURL="http://registro.br/images/logo-cg.gif"
var sleep=100

function isOnline()
{
    <!-- alert("executando"); -->
    document.getElementsByTagName('body')[0].innerHTML +=
        '<img id="img_test" style="display: none;" ' +
        'src="' + testURL + "?" + Math.random() + '" ' +
        'onerror="isOnline_return(false);" ' +
        'onload="isOnline_return(true);">';

    isOnline_return = function(result){
        REDIRECT(result);
        var element = document.getElementById('img_test');
        element.parentNode.removeChild(element);
    }
}

function REDIRECT(result)
{
    <!-- alert(result); -->
    if(result==true){
        location.href = "http://www.google.com.br";
    } else {
        setTimeout("isOnline()", sleep);
    }
}
</script>
</head>
<body onload="isOnline();"><p>aguardando conexão...</p></body>
</html>

Só não gostei desse random() que tive que incluir pra não ler a imagem a partir do cache, mas por enquanto está bom. Se alguém quiser melhorar, a vontade.

Inté ;)

Editado por Viny Games
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...