2016-07-16 47 views
0

其实我们在数据库发生一些更新时播放通知声音,所以我试图在浏览器最小化时每30秒刷新一次ActionMethod,这在Firefox中工作正常,但在Chrome中这不起作用。当浏览器被最小化时,每隔30秒,asp mvc刷新页面

场景:

最小化浏览器,让计算机处于闲置状态。

我已经尝试了两种方法:

方法1:

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

方法2:

<script> 

    $(document).ready(function() { 

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

    }); 

</script> 

阅读this文章后,它似乎在Chrome最小化它设置Javascript setIntervalsetTimeout为空闲状态,因为浏览器性能改进会影响Javascript间隔的执行。

所以我可以使用计划任务如FluentScheduler,Quartz.NET或Hangfire每30秒重新加载ActionMethod

任何帮助将是伟大的。

+2

对于这样的情况,我会用wihh推送通知到页面而不是每30秒轮询一次。你可以使用像SignalR这样的库来进行客户端 - 服务器通信 – Massanu

+0

@Massanu,谢谢,最后我用signalR去了,一切正常,[这里](http://stackoverflow.com/a/38587725/2218697)是我的解决方案。 – stom

回答

1

SignalR在这里是一个完美的匹配。你为什么希望你的客户每隔30秒向服务器发送请求?这很可能会影响您的性能并增加您的服务器负载。

相反,我会建议使用SignalR并将通知推送到客户端,每当有任何更新。

+0

是的你是正确的,我已经开始使用'SignalR',但我有一个问题,如问题和[这里提到](http://stackoverflow.com/questions/22061280/javascript-halts-in-inactive-android -chrome-tab)出于性能原因,chrome浏览器在禁用JavaScript时禁用JavaScript。所以我们的一些客户端保持浏览器最小化,当我使用'SignalR'向客户端发送通知并尝试通过调用'JavaScript'函数播放声音时,它不起作用。任何建议? – stom

+0

在Godaddy共享主机,因为他们限制某些功能,所以我无法使用'SqlDependency',但[这里](http://stackoverflow.com/a/38587725/2218697)是我的解决方案**播放通知没有SqlDependency使用SignalR **,即使浏览器处于不活动状态或最小化状态,它也可以工作。这个**在新的通知来临时重新加载部分视图**。 – stom

+1

@stom - 酷!很高兴知道它解决了! –

相关问题