从服务器到客户端的 SignalR 消息重复
SignalR message from server to client duplicated
我正在解决 MVC
应用程序中 SignalR
的问题。我已经基于 internet template
创建了一个 MVC 4
项目并安装了 SignalR nuget packet
。 Hub
class 看起来像这样:
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 秒弹出一次。
我已经学习了这个精彩的教程 http://www.dotnetcurry.com/aspnet-mvc/826/server-side-timer-aspnet-mvc-signalr。它实现单例并在该单例中而不是在集线器中启动计时器。现在它按预期工作了。
我正在解决 MVC
应用程序中 SignalR
的问题。我已经基于 internet template
创建了一个 MVC 4
项目并安装了 SignalR nuget packet
。 Hub
class 看起来像这样:
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 秒弹出一次。
我已经学习了这个精彩的教程 http://www.dotnetcurry.com/aspnet-mvc/826/server-side-timer-aspnet-mvc-signalr。它实现单例并在该单例中而不是在集线器中启动计时器。现在它按预期工作了。