2016-07-16 7 views
0

Eigentlich spielen wir einen Benachrichtigungston, wenn einige Updates in der Datenbank passiert, also versuche ich alle 30 Sekunden eine ActionMethod nachzuladen, wenn Browser in minimized, das funktioniert in Firefox gut, aber In Chrome funktioniert das nicht.asp mvc Seite alle 30 Sekunden neu laden, wenn der Browser minimiert ist

Szenario:

den Browser minimieren und den Computer im Leerlauf lassen.

Ich habe zwei Methoden versucht:

Methode 1:

<meta http-equiv="refresh" content="30;URL=http://example.com/" /> 

Methode 2:

<script> 

    $(document).ready(function() { 

    setTimeout(function(){ 
    window.location.reload(1); 
    }, 30000); 

    }); 

</script> 

Nach this Post zu lesen, wie es scheint, wenn Chrome es minimiert wird setzt Javascript setInterval und setTimeout in einen Leerlaufzustand versetzt, da die Verbesserungen der Browserleistung die Ausführung von Javascript-Intervallen beeinflussen.

Kann ich geplante Aufgaben wie FluentScheduler, Quartz.NET oder Hangfire verwenden, um alle 30 Sekunden einen ActionMethod nachzuladen?

Jede Hilfe wäre großartig.

+2

Für ein Szenario wie das würde ich wihh Push-Benachrichtigungen auf die Seite statt alle 30sec polling gehen. Sie können Bibliotheken wie SignalR für Client-Server-Kommunikation verwenden – Massanu

+0

@Massanu, Danke, schließlich ging ich mit signalR und alles funktioniert gut, [hier] (http://StackOverflow.com/a/38587725/2218697) ist meine Lösung. – stom

Antwort

1

SignalR ist eine perfekte Ergänzung hier. Warum möchten Sie, dass Ihre Clients alle 30 Sekunden eine Anfrage an den Server senden? Dies beeinträchtigt wahrscheinlich Ihre Leistung und erhöht die Serverlast.

Stattdessen würde ich vorschlagen, SignalR zu verwenden und Benachrichtigung an den Client zu senden, wenn es ein Update gibt.

+0

Ja, Sie haben Recht, und ich habe begonnen, 'SignalR' zu verwenden, aber ich habe ein Problem, wie in Frage und [hier] erwähnt (http://stackoverflow.com/questions/22061280/javascript-halts-in-inactive-android -chrome-tab) aus Leistungsgründen Chrome Browser deaktiviert JavaScript, während es inaktiv ist. einige unserer Kunden halten den Browser minimiert, und wenn ich mit 'SignalR' eine Benachrichtigung an den Client sende und versuche, einen Sound durch Aufruf einer' JavaScript'-Funktion abzuspielen, funktioniert das nicht. Irgendein Vorschlag ? – stom

+0

In Godaddy Shared Hosting, weil sie einige Funktionen einschränken, so konnte ich nicht 'SqlDependency' verwenden, aber [hier] (http://Stackoverflow.com/a/38587725/2218697) ist meine Lösung für ** Play-Benachrichtigungen ohne SqlDependency mit SignalR ** funktioniert es auch, wenn der Browser inaktiv oder minimiert ist. Dies ** lädt die Teilansicht ** neu, wenn eine neue Benachrichtigung kommt. – stom

+1

@stom - Cool !! Gut zu wissen, dass es gelöst ist !! –

Verwandte Themen