3
respostas

Realizar chamadas Rest periodicamente em Background.

Estou desenvolvendo uma aplicação Web onde há um arquivo JavaScript em que, de 10 em 10 segundos, faço chamadas Rest a um WEB Server e insiro os dados retornados em uma base de dados. Para tal, uso o seguinte código

setInterval(function () {
    infoSwitchPeriodica() // faz chamada REST e passa os dados para o controller inserir no banco de dados
}, 10000);

O problema é que, utilizando o script dessa forma, toda vez que mudo de aba ou recarrego a aba em que estou, o contador reinicia o que é extremamente danoso para a minha aplicação.

Existe alguma forma de fazer esse arquivo Javascript ser invocado somente ao subir a aplicação (através do Startup por exemplo), e, desta forma, não ser recarregado toda vez que mudo de aba durante o uso da aplicação?

Agradeço qualquer ajuda.

3 respostas

Pedro, não sei se é a melhor resposta para o seu problema, mas lá vai.

Via javascript apenas se colocar o script num layout shared e esse projeto só tiver um layout, senão vai reiniciar mesmo.

Agora seria melhor criar uma classe "static" no projeto dentro da App_Start para que seja executado ao iniciar e não ser recarregado mais.

Espero ter ajudado de alguma forma. Se solucionou o problema, marque a resposta, por favor! Abs.

Desculpe a ignorância, não sou muito experiente com ASP.NET. Mas você está sugerindo a criação de uma classe que será chamada no Startup? E onde entrariam as chamadas REST? Não preciso do JavaScript para isso? Obrigado pela ajuda de qualquer forma

Praticamente isso. Você não tem as classes que são inicializadas no Application_Start do Global.asax? Elas estão todas declaradas como Static na pasta App_Start. Sendo assim você criaria um serviço de busca na sua Api REST como uma Thred Asyncrona.

Na verdade nunca implementei tal coisa que precisa e parece trabalhoso mas seguem dois artigos que podem clarear mais as idéias. Pode não solucionar mas poderá entender melhor o que falei.

Veja nesses artigos que o que interessa é o C#, esquece se é webForms ou mvc por enquanto:

Talvez alguém com mais experiência possa te ajudar melhor e nos responda abaixo! Abs