信号器无法连接到Firefox和Chrome上的集线器

我有一个与信号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连接到集线器,数据被拉出 .

有没有人面对这个问题?

任何帮助表示赞赏 .

谢谢

回答(2)

2 years ago

在订阅客户端方法后启动连接,如下所示:

var cHub = $.connection.userHub;
cHub.client.UpdateCount = function (count) {
    $('#counter').text(count);
}

$.connection.hub.start();

2 years ago

我能够通过设置超时来解决问题 . 以下是我的代码 .

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正在这样做 .