2012-10-12 40 views
0

我的MVC应用程序中有两个SignalR集线器,ChatHubAnotherHubChatHub正常工作,但我无法连接到另一个。我知道SignalR承认AnotherHub存在的,因为我得到的/ signalr /集线器下面的JavaScript:SignalR ConnectionData为空,并且不会连接

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)); 
    } 
}; 

在聊天页面,提琴手告诉我/signalr/signalr/connect连接时以下几点:

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

但是,试图连接到anotherHub时,菲德勒说:

connectionData  [] 
tid     3 

我聊天页面上的javascript:

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

和另一页上:

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

现在,一件奇怪的事;当我在另一个页面上将anotherHub更改为chatHub时,连接起作用。当我在聊天页面上更改chatHubanotherHub时,这也适用。唯一的组合不是另一页上的anotherHub。 (我已经通过集线器的构造函数的服务器端断点和ConnectionData参数检查fiddler来确认这一点)。有任何想法吗?

+0

如果您未注册anotherHub上的任何回调,connectionData将为空。 – davidfowl

+0

鉴于如果我在另一个页面上使用chatHub,它可以正常工作,反之亦然,我应该怎么做? – harriyott

+0

你有没有找到解决这个问题的方法?我有同样的错误。我有2个集线器,但第二个集线器上的connectionData是空的。我设置了回调,但它不工作。 – spaceman

回答

0

您确定您已经在另一个页面上引用了所有相同的JS库(特别是/ signalr/hubs)吗?

+0

是的,很确定。我可以连接到另一个页面上的'chatHub',而不是'anotherHub'。 – harriyott