Ir para conteúdo

Arquivado

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

Reis

solicitação do cliente continuar aberta e o servidor retornar um outro

Recommended Posts

Num sistema que estou criando uma das páginas elenca os usuários atuais do sistema através da leitura de uma variável de aplicativo. Cada usuário ao entrar na página recebe uma variável de sessão chamada "usuários" e altera uma varivel de aplicativo também chamada "usuários". Consegui atualizar imediatamente a variável de aplicativo "usuarios" quando alguém abandona o sistema.

Em decorrência da entrada ou saída de um usuário o sistema deve atualizar a página de um cliente já aberta. Usei para isso o evento onmouseover do javascript sobre a página aberta do cliente para acionar uma função ajax que abre uma pagina asp que compara a varivel de sessão "usuários" deste usuário com a variável de aplicativo "usuários". Se não são iguais o retorno do ajax solicita o recarregamento da página e assim os usários elencados na página serão atualizados.

 

Isto funciona mas tem um custo: toda vez que um usuário avança com o mouse sobre a página, o servidor é acionado via ajax em grande parte das vezes à toa. Andei lendo sobre serviços da web e conexões "soap". Pergunto alguém têm alguma idéia sobre isso? Criar uma página cuja solicitação do cliente continue aberta e o servidor possa retornar um outro response pro mesmo request.

 

Pelo que eu entendí o Asp.Net trata de eventos no cliente. Teria alguma solução pra tratar eventos no servidor, tipo alterou a variável de aplicativo "usuários", recarrega a página. Pensei no Nodes.js.

 

Todas as alternativas levam a um investimento de tempo sem garantia de retorno de sucesso.

 

Por tudo isso rogo por uma luz no fim do túnel. Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Websockets. Mas seu servidor precisa disponibilizar este recurso para você e acredito que com ASP 3.0 você não conseguirá utilizar este recurso.

 

O ASP.NET possui um recurso que chama Signalr que faz o que você precisa, mas você teria trabalho para integrar ASP com ASP.NET, se você migrasse tudo para o ASP.NET ficaria mais fácil.

 

Existe uma técnica que chama Ajax Polling que faz algo parecido, mas manterá uma conexão aberta durante todo o tempo que o usuário estiver na página. É menos pior do que ficar atualizando o Ajax de tempo em tempo, pois será mais preciso manter a conexão aberta, mas não é o ideal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela atenção, Hargon. Não migrei para o Asp.Net porque o sistema tem um forte apelo ao Jquery e achei que iria competir com os "runat server" no body do cliente. Vou me informar sobre "Websockets", "Signair" e "Ajax Polling". Eu até tinha pensado em uma solicitação ajax com timeout bem elevado mas achei que pra não retornar resposta do servidor o script precisaria ficar fazendo um looping no servidor até que houvesse alteração da variável de aplicativo "usuários" e esse looping no servidor não seria nada bom pro sistema.

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.