SignalR ConnectionData empty, and won't connec

2019-09-07 06:36发布

问题:

I have two SignalR hubs in my MVC app, ChatHub and AnotherHub. ChatHub is working nicely, but I can't connect to the other one. I know that SignalR recognises that AnotherHub exists, because I'm getting the following JavaScript in /signalr/hubs:

signalR.chatHub = {
    _: {
        hubName: 'ChatHub',
        ignoreMembers: ['post'],
        connection: function () { return signalR.hub; }
    },

    post: function (room, message) {
        return invoke(this, "Post", $.makeArray(arguments));
    }
};

signalR.anotherHub = {
    _: {
        hubName: 'AnotherHub',
        ignoreMembers: ['doSomething'],
        connection: function () { return signalR.hub; }
    },

    doSomething: function (thing) {
        return invoke(this, "DoSomething", $.makeArray(arguments));
    }
};

On the chat page, Fiddler tells me the following when connecting with /signalr/signalr/connect:

connectionData      [{"name":"chathub"}]
tid                 10

However, when trying to connect to anotherHub, Fiddler says:

connectionData      []
tid                 3

My javascript on the chat page:

        cn = $.connection.chatHub;
        $.connection.hub.start();

and on the another page:

        cn = $.connection.anotherHub;
        $.connection.hub.start();

Now, a curious thing; when I change anotherHub to chatHub on the another page, the connection works. When I change chatHub to anotherHub on the chat page, that also works. The only combination that doesn't is anotherHub on the another page. (I've confirmed this by server-side breakpoints on the hubs' constructors and checking fiddler for the ConnectionData parameter). Any ideas?

回答1:

Are you sure you have referenced all of the same JS libraries (especially /signalr/hubs) on the another page?



标签: c# signalr