我有一个与信号R集成的基本MVC应用程序。我正在使用此应用程序跟踪在线用户。
以下是我的Hub类
public class UserHub:Hub { static long counter = 0;
public override Task OnConnected()
{
//Update Count when User is connected
counter = counter+1;
Clients.All.UpdateCount(counter);
return base.OnConnected();
}
public override Task OnDisconnected(bool stopCalled)
{
counter = counter-1;
Clients.All.UpdateCount(counter);
return base.OnDisconnected(stopCalled);
}
}
以下是我的javascript代码
$.connection.hub.logging = true;
//setup hubs
var userHub = $.connection.userHub;
$.connection.hub.start().done(function () {
});
//function to recieve data from server
userHub.client.UpdateCount = function (count) {
$('#counter').text(count);
}
我也在startup.cs类中注册了。
问题是信号器是否抛出错误" SignalR:没有订阅集线器。 "当我刷新页面5次时,信号r连接到集线器,数据被拉。
有没有人面对这个问题?
感谢任何帮助。
谢谢
答案 0 :(得分:1)
在您订阅客户端方法后启动连接,如下所示:
var cHub = $.connection.userHub;
cHub.client.UpdateCount = function (count) {
$('#counter').text(count);
}
$.connection.hub.start();
答案 1 :(得分:0)
我能够通过设置超时来解决问题。以下是我的代码。
var cHub = $.connection.userHub;
setTimeout(function () {
$.connection.hub.start();
},
1000);
//function to recieve data from server
cHub.client.UpdateCount = function (count) {
$('#counter').text(count);
}
$.connection.hub.logging = true;
我仍然无法弄清楚为什么firefox会这样做。