2012-10-12 47 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