30 messaggi dal 13 giugno 2011
Salve, sto realizzando una webapplication e vorrei che, quando l'utente è loggato, in maniera del tutto trasparente ed ogni 30 secondi deve essere eseguita una funzione la quale, se trova corrispondenze, le notifica (anche con un popup ad es.) all'utente loggato.

Sto provando di tutto, ma non riesco a trovare una soluzione idonea che non appesantisca troppo l'applicazione o che non crei altri problemi.

In particolare ho utilizzato un timer ajax con updatepanel, mettendoli nella masterpage. La cosa potrebbe funzionare ma il problema sorge all'evento tick del timer, perchè vengono aggiornati tutti gli updatepanel (anche con metodo conditional) presenti nella pagina;
inoltre lo scroll della pagina non è fluido, ma va a "scatti", ovvero si blocca appena parte l'evento tick. Stessa cosa se in quel momento sto scrivendo in una textbox, anch'essa contenuta in altro updatepanel, parte del testo, che digito durante l'esecuzione del codice, lo perdo quanto l'updatepanel termina l'aggiornamento.

Un'altra prova che ho fatto è utilizzare i delegate.
Il codice viene eseguito correttamente ed in maniera trasparente all'utente, ma come faccio a farlo eseguire ogni tot. secondi?
14 messaggi dal 12 dicembre 2001
Ciao

Io faccio la stessa cosa utilizzando il setTimeout, ogni 30 sec faccio una chiamata ajax ad una pagina ashx che mi restituisce true o false, in base al ritorno faccio comparire un popup utilizzando il plugin di nome: jquery.freeow.js.

Se anche il setTimeout ti crea problemi sposta il codice del settimeout all'interno di una pagina che chiami in un iframe.

esempio di codice della funzione chiamata ciclicamente col settimeout:

function GoIframeLoginControl() {
if (timeOutLoginControl !=null)clearTimeout(timeOutLoginControl);

jq.ajax
({
url: "tuaPagina.ashx",
async: true,
cache: false,
success: function(data) {
//cntrolli il valore di data e fai vedere / o non vedere il tuo popup
},
error: function(xhr, status, errorThrown) {
}
});
timeOutLoginControl = setTimeout("GoIframeLoginControl()", 3000);
}

Ciao

Matteo
1 messaggio dal 14 settembre 2001
Prova con SignalR e ti puoi dimenticare i timer!
30 messaggi dal 13 giugno 2011
Per il momento ho risolto aggiungendo un iframe nascosto nella pagina di default e separatamente eseguo il codice che mi serve e con il timer ( o refresh della pagina) il ciclo si ripete.

Tuttavia avevo già letto qualcosa sulle potenzialità di SignalR, e penso sia l'opzione migliore, ma al momento ho poco tempo a disposizione per approfondire.

furiagp: puoi consigliarmi qualche tutorial/esempio pratico?

comunque, grazie ad entrambi
14 messaggi dal 12 dicembre 2001
Ciao

Io per cominciare ti consiglio http://www.asp.net/signalr poi in giro per la rete trovi un po' quello che ti serve.

Ciao

Matteo

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.