Jump to content
Fórum Script Brasil
  • 0

Testar conexão do cliente


Mrk3004

Question

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.

Edited by Viny Games
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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é ;)

Edited by Viny Games
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...