从服务器到客户端的SignalR消息重复

时间:2015-08-04 16:29:45

标签: javascript asp.net-mvc signalr

我正在解决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秒内弹出一次。

1 个答案:

答案 0 :(得分:1)

我已经按照这个精彩的教程http://www.dotnetcurry.com/aspnet-mvc/826/server-side-timer-aspnet-mvc-signalr。它实现单例并启动计时器不在集线器中但在该单例中。现在它按预期工作。