Jump to content


Photo

Manter Sessão Viva


  • Faça o login para participar
8 replies to this topic

#1 Ma®©elo

Ma®©elo

    Normal

  • Usuários
  • 63 posts
  • Sexo:Não informado

Posted 22/11/2010, 10:33

Amigos, bom dia!

Estou com um problema aqui q é o seguinte:

estou tentando deixar uma sessão "viva" via Javascript e não tá funcionando.

O codigo é esse aqui:

<html>
<head>
<script type="text/javascript">
function keep_alive() {
	var http_request;
    http_request = new XMLHttpRequest();
    http_request.open('GET', "dumb.asp");
    http_request.send(null);
};

setInterval(keep_alive, 10000);  // A cada dez segundos
</script>
<body>
<h2>Hora = 22/11/2010 11:32:41</h2>
<h3>Id = 326490877</h3>
<h4>Timeout = 5</h4>
</body>
</html>

no dumb.asp, tem:
<%
Option Explicit
%>
<html>
<head>
<body>
<%
Response.Expires = -1
Response.ExpiresAbsolute = Now() - 2
Response.CacheControl = "no-store"
Response.addHeader "pragma","no-cache"
Response.addHeader "cache-control","private"
%>
</body>
</html>

A parte de baixo é ASP, mas creio q o erro possa estar acontecendo no Javascript mesmo...

O q pode estar errado? Tem outro jeito eficiente de fazer isso???

[ ]s

#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 22/11/2010, 17:49

Esse código não deve funcionar no IE. Pra usar o ajax de modo que funcione em todos os navegadores, use uma biblioteca, porque facilita o trabalho. Recomendo essa:

http://www.nczonline...nloads/zXml.zip

Inclua o .js no seu código e troque:

http_request = new XMLHttpRequest();
Por:

http_request = new zXmlHttp.createRequest();
O resto continua igual.

O setInterval tem um problema também. A maneira mais "universal" seria essa:

setInterval('keep_alive()', 10000);
Veja se com esses ajustes funciona.

#3 Ma®©elo

Ma®©elo

    Normal

  • Usuários
  • 63 posts
  • Sexo:Não informado

Posted 23/11/2010, 09:03

Esse código não deve funcionar no IE. Pra usar o ajax de modo que funcione em todos os navegadores, use uma biblioteca, porque facilita o trabalho. Recomendo essa:

http://www.nczonline...nloads/zXml.zip

Inclua o .js no seu código e troque:

http_request = new XMLHttpRequest();
Por:

http_request = new zXmlHttp.createRequest();
O resto continua igual.

O setInterval tem um problema também. A maneira mais "universal" seria essa:

setInterval('keep_alive()', 10000);
Veja se com esses ajustes funciona.


LeoB, obrigado pelas dicas! Vou testar aqui e depois dou um retorno.

[ ]s

LeoB, testei o script, aconteceu uma coisa curiosa. Olha esse pequeno log q montei:

Hora = 23/11/2010 09:03:39
Id = 485259456
Timeout = 5
**************************
Hora = 23/11/2010 09:10:39
Id = 485259456
Timeout = 5
**************************
Hora = 23/11/2010 09:17:23
Id = 485259456
Timeout = 5
**************************
Hora = 23/11/2010 09:26:52
Id = 485259456
Timeout = 5
**************************
Hora = 23/11/2010 09:34:23
Id = 485259456
Timeout = 5
**************************
Hora = 23/11/2010 09:41:21
Id = 485259456
Timeout = 5
**************************
Hora = 23/11/2010 09:50:43
Id = 485259456
Timeout = 5
**************************
Hora = 23/11/2010 10:03:39
Id = 492877677
Timeout = 5

Ele funcionou bem até completar uma hora. Qdo virou uma hora, trocou a SessionId...

O servidor pode ter alguma coisa com isso? Pq se a sessão é de 5 min, analisando o log, dá pra ver claramente que a suas sugestões funcionaram muito bem...

[ ]s e valeu pelas dicas! :)

#4 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 23/11/2010, 09:40

De onde você tirou esse id aí?

#5 Ma®©elo

Ma®©elo

    Normal

  • Usuários
  • 63 posts
  • Sexo:Não informado

Posted 24/11/2010, 12:51

De onde você tirou esse id aí?


Do ASP:

Response.Write Session.SessionID

Pq?

#6 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 24/11/2010, 15:34

Achei que era PHP. Aí esse número estava estranho, mas agora faz sentido. Não vejo motivo pro ID mudar. Você repetiu esse teste? Sua conexão não caiu em nenhum momento enquanto a página estava aberta?

#7 Ma®©elo

Ma®©elo

    Normal

  • Usuários
  • 63 posts
  • Sexo:Não informado

Posted 25/11/2010, 06:56

Achei que era PHP. Aí esse número estava estranho, mas agora faz sentido. Não vejo motivo pro ID mudar. Você repetiu esse teste? Sua conexão não caiu em nenhum momento enquanto a página estava aberta?


Pois é, eu devo ser o único ser do universo q ainda faz alguma coisa séria em ASP... hehehe

Cara, aparentemente, não caiu... Apesar da página de teste não fazer nada, ficar lá parada. O q achei estranho foi q se a conexão era de 5 min, pq na primeira hora ela funcionou e caiu depois?

Pode ter alguma configuração do servidor ou do meu provedor q derrube esse tipo de conexão? Se bem q mesmo assim, pro servidor a página não está inativa, pois de tempos em tempos ele executa a requisição...

Vou tentar repetir o teste em casa, pq por incrível q pareça, a conexão em casa é mais estável q a daqui do serviço.

[ ]s e, mais uma vez, obrigado pela força!

#8 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 25/11/2010, 09:03

Pois é, o jeito é repetir o teste pra tirar a dúvida, porque não sei de nenhuma configuração no servidor que faça isso. Se não for problema da conexão, não sei o que pode ser.

#9 Ma®©elo

Ma®©elo

    Normal

  • Usuários
  • 63 posts
  • Sexo:Não informado

Posted 25/11/2010, 15:03

Pois é, o jeito é repetir o teste pra tirar a dúvida, porque não sei de nenhuma configuração no servidor que faça isso. Se não for problema da conexão, não sei o que pode ser.


Cara, testei aqui em casa, ele não resistiu aos 5 primeiros minutos... :(

Será q vale a pena tentar cookies ou algo assim? Pq o único propósito é autenticar o usuário...

Qualquer ideia nesse sentido será bem-vinda!!!

[ ]s




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq