Zdarzenie SignalR staje się sporadyczne po wdrożeniu na serwerze

Działając lokalnie przez VS - IIS Express, wszystko działa dobrze w 100%.

Kiedy publikuję na serwerze internetowym (w sieci lub online), zdarza się, że przestaję strzelać do „OnConnected” ... ale nie cały czas. Jeśli odświeżę, może wtedy wystrzelić lub nie.

Problematyczne zdarzenie to ResetTimer, patrz poniżej na przykład kod.

Mam logowanie i konsola nie wyświetla żadnych błędów.

Używam sygnału 1.0.1

    <script type="text/javascript">
    var timerTime, setIntervalInstance;
    $(function () {
        $('#rollresults').tablesorter({ headers: { 0: { sorter: false }, 1: { sorter: true }, 2: { sorter: false } } });

        $.connection.hub.logging = true;
        // Proxy created on the fly          
        var chat = $.connection.brewBattleHub;
        // Start the connection
        $.connection.hub.qs = '[email protected]["groupName"]';
        $.connection.hub.start().done(function () {
            $("#broadcast").click(function () {
                // Call the chat method on the server
                chat.server.roll($("#drinkname").val(), $("#comment").val().substr(0, 40));
                $("#rollresults").show('slow');
                $("#broadcast").prop("disabled", "disabled");
                $("#drinkname").prop("disabled", "disabled");
                $("#comment").prop("disabled", "disabled");
            });

            setIntervalInstance = window.setInterval(timerTick, 1000);
        }).fail(function (reason) {
            console.log("SignalR connection failed: " + reason);
            //chat.server.sendMessage(@Model.UserName + " has Error! (Check logs)");
        });


        // Declare a function on the chat hub so the server can invoke it          
        chat.client.addRoll = function (player, roll, drink, comment) {
            $("#rollresults").find("tr").eq(1).removeClass('loserrow');
            $('#rollresults tbody').append('<tr><td>' + player + '</td>' + '<td>' + roll + '</td>' + '<td>' + drink + '</td>' + '<td>' + comment + '</td></tr>');
            $("#rollresults").trigger("update");
            $("#rollresults").tablesorter({ sortList: [[1, 0]] });
            $("#rollresults").find("tr").eq(1).addClass('loserrow');
        };

        chat.client.addMessage = function (message) {
            $('#messages').append("<div class='message'>" + message + "</div>");
        };

        chat.client.resetTimer = function () {
            timerTime = 30;
        };

        function timerTick() {
            if (timerTime > 0) {
                timerTime = timerTime - 1;
                $('#timer').html("<div>Starting in: " + timerTime + "</div>");
                $("#timerbox").show('slow');
            } else {
                clearInterval(setIntervalInstance);
                $("#broadcast").removeProp("disabled", "disabled");
                $('#timerbox').hide('slow');
            }
        }
    });

Relawentna sekcja koncentratora

        public override Task OnConnected()
    {
        var @group = GetOrCreateGroup();

        var user = new ConnectedUser { ConnectionId = Context.ConnectionId, Name = Context.User.Identity.Name };
        @group.AddUser(user);

        foreach (var connectedUser in @group.ConnectedUsers.Where(u => u != user))
        {
            Clients.Caller.addMessage(HttpUtility.HtmlEncode(connectedUser.Name + " has connected."));
        }

        Groups.Add(Context.ConnectionId, @group.Name);
        Clients.OthersInGroup(@group.Name).addMessage(HttpUtility.HtmlEncode(user.Name + " has connected."));
        Clients.Caller.addMessage(HttpUtility.HtmlEncode("You've connected..."));

        ResetTimer(@group.Name);
        return base.OnConnected();
    }

    Group GetOrCreateGroup()
    {
        var groupName = Context.QueryString["groupName"].ToUpper();
        var @group = BattleGroups.FirstOrDefault(g => g.Name.ToUpper() == groupName);

        if (group == null)
        {
            group = new Group { Name = groupName };
            BattleGroups.Add(group);
        }
        return @group;
    }

    public void ResetTimer(string groupName)
    {
        Clients.Group(groupName).resetTimer();
    }

Konsola

 [09:10:01 GMT+0100 (GMT Daylight Time)] SignalR: Negotiating with '/signalr/negotiate?     groupName=Public'. jquery.signalR-1.0.1.js:54 
[09:10:01 GMT+0100 (GMT Daylight Time)] SignalR: Attempting to connect to SSE endpoint 'http://server:88/signalr/connect?transport=serverSentEvents&connectionToke…onData=%5B%7B%22name%22%3A%22brewbattlehub%22%7D%5D&groupName=Public&tid=4' jquery.signalR-1.0.1.js:54
[09:10:01 GMT+0100 (GMT Daylight Time)] SignalR: EventSource connected jquery.signalR-1.0.1.js:54
[09:10:01 GMT+0100 (GMT Daylight Time)] SignalR: Now monitoring keep alive with a warning timeout of 13333.333333333332 and a connection lost timeout of 20000 jquery.signalR-1.0.1.js:54
[09:10:01 GMT+0100 (GMT Daylight Time)] SignalR: Triggering client hub event 'addMessage' on hub 'brewBattleHub'. 
Uzupełnienie

W rzeczywistości nie działa w 100% lokalnie (tylko przez większość czasu), myślę, że może to być problem wprowadzony przez opóźnienie?

questionAnswers(1)

yourAnswerToTheQuestion