Roman
Roman

Reputation: 3

Reconnect hub necessary

I have simple project in ASP.NET Web site with signalr. Code for start connection hub:

var scriptStarted = 'var myHub = $.connection.' + hubName + ';' + methodNameInitHub + '(myHub);';
$.connection.hub.error(function () {
    alert("An error occured");
});

$.connection.hub.start()
                        .done(function () {
                            eval(scriptStarted);
                            myHub.server.registerClient($.connection.hub.id, clientIdentifier);
                        })
                        .fail(function () { alert("Could not Connect!"); });

This method is call in "methodNameInitHub + '(myHub);"

function methodInitEventHub(hub) {
            if (hub) {
                hub.client.addEvent = function (eventOperationName, eventType) {
                    $("#events").append("<li>" + eventOperationName + ", " + eventType + "</li>");
                };
            }
        }

Code for stop connection hub:

$.connection.hub.stop();

When I load .aspx page and start hub all code execute without errors, but event from server not recieved. After I stop and start again hub connection events begining received in client (browser) http://clip2net.com/s/2CP2e

Why I need to restart connection hub for begin received event from server ? Thanks.

Upvotes: 0

Views: 117

Answers (1)

N. Taylor Mullen
N. Taylor Mullen

Reputation: 18301

The reason you're having issues is because you must have at least 1 client side hub function prior to calling start otherwise you will not be subscribed to the hub.

Try doing

myHub.client.foo = function() {}

prior to start.

The reason why it works after you stop then re-start the connection is because your script binds a new client method, hence allowing you to subscribe to the hub after you've restarted the connection.

Hope this helps!

Upvotes: 1

Related Questions