我正在解决SignalR
申请中的MVC
问题。我已根据MVC 4
和instaled internet template
创建了一个SignalR nuget packet
项目。 Hub
类看起来像这样:
public class yourAppHub : Hub
{
static Timer t;
public yourAppHub()
{
t = new Timer(5000);
t.Elapsed += Hello;
t.Start();
}
public void Hello(object sender, ElapsedEventArgs e)
{
Clients.All.refreshPage("hello");
}
}
这就是我在母版页(_Layout.cshtml
)上的内容:
@if (Request.IsAuthenticated)
{
<script>
$(function () {
var con = $.hubConnection();
var hub = con.createHubProxy('yourAppHub');
hub.on('refreshPage', function (message) { alert(message); });
con.start(function () { hub.invoke('Hello'); });
});
</script>
}
当我登录时,我每5秒收到2个警报。为什么2个警报?但如果我转到主页,然后转到联系表单,然后在另一个页面上,警报开始不断弹出。我无法得到我在这里做错了什么。我预计警报会在5秒内弹出一次。
答案 0 :(得分:1)
我已经按照这个精彩的教程http://www.dotnetcurry.com/aspnet-mvc/826/server-side-timer-aspnet-mvc-signalr。它实现单例并启动计时器不在集线器中但在该单例中。现在它按预期工作。