Signalr无法连接到firefox和chrome上的集线器

时间:2017-10-27 18:35:58

标签: javascript asp.net-mvc signalr signalr-hub

我有一个与信号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 个答案:

答案 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会这样做。