Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal eu tenho uma aplicação com uma pagina que faz uma chamada ajax para meu server o tempo todo a cada 5 segundos. A pagina em si funciona muito bem, mas tem um grande problema a qual não sei o que fazer.
A cada 5 seg, eu faço uma chamada no server para verificar se chegou alguma mensagem, pois o usuário tem por obrigação responder imediatamente. Então quando o server responde com novas mensagens eu toco um som para que o usuário saiba que chegou mensagem e faça o trabalho dele.
Isso funciona, mas tem um porem, o usuário não fica la olhando pra tela do sistema, ele minimiza a tela do navegador e vai fazer outras coisas, nessa que ele minima o navegador depois de alguns minutos as chamadas ajax param, é como se o navegador parasse de executar os scripts, mas se ele volta para a tela as chamadas voltam a acontecer.
Devido a esse problema, a tela não esta atingindo o proposito, pois não esta alertando o usuário.
A linguagem, por de traz é asp.net mvc, mas acho que esse problema não é na programação uma vez que ele funciona sem erros. Eu devo fazer alguma configuração para que a pagina continue executando os scripts enquanto estiver minimizada ou o usuário estiver em outra aba?
Olá amigo.
Na verdade a maior parte dos navegadores modernos não interrompe a execução dos scripts JS enquanto a janela perde o foco ou é minimizada. A única coisa que eles fazem é limitar o processamento e o uso de recursos.
O Chrome e o Firefox por exemplo, se não me falha a memória, limitam as chamadas de setTimeout e setInterval para cerca de 1000ms, mas como você pode imaginar, isso não faria muita diferença no seu código, que teoricamente roda um setInterval de 5000ms.
Exemplo: se você recebe um e-mail, o Gmail vai notificar você e alterar o título da janela, então a sua aplicação deveria seguir funcionando normalmente também, concorda?
Algumas sugestões:
1 - Procure deixar de fazer essa verificação a cada 5 segundos. Existem soluções mais eficientes para isso, como o WebSocket.