2012-02-14 56 views
2

我已經開始在SignalR 0.4中進行挖掘並陷入了一個問題。我想有相同的網頁,其中爲了簡單起見,在兩個不同的集線器是:無法通過兩個集線器獲得SignalR的工作

public class ChatHub : Hub 
{ 
    public void Send(string message) 
    { 
     Clients.addMessage(message); 
    } 
} 

public class Chat2Hub : Hub 
{ 
    public void Send2(string message) 
    { 
     Clients.addMessage2(message); 
    } 
} 

這是我的客戶端代碼:

function initChat() { 
    var chat = $.connection.chat; 

    chat.addMessage = function (message) {...}; 
    $('.send-cmd').click(function() {...}); 

    return $.connection.hub.start(); 
} 

function initChat2() { 
    var chat2 = $.connection.chat2; 

    chat2.addMessage2 = function (message) {...}; 
    $('.send2-cmd').click(function() {...}); 

    return $.connection.hub.start(); 
} 

$(function() { 
    initChat().done(function() { 
     initChat2(); 
    }); 
}); 

很簡單,但我不能讓他們一起工作。在這個例子中,「聊天」工作正常,「聊天2」失敗(沒有錯誤)。 如果我反轉初始化的順序當然會發生相反的情況。

我錯過了什麼?

回答

3

爲什麼要啓動集線器連接兩次。所有集線器都有一個連接,因此您只需要調用$ .connection.hub.start()一次。

+0

它不起作用。還有一個check in signalR.start(),它檢查是否已經有可用的傳輸並立即解決承諾。大圖書館BTW :-) – iacoware 2012-02-14 10:49:12

+0

什麼不行?呼叫開始一次?代碼中存在一系列問題。在打電話開始之前,您需要訂閱所有集線器上的所有事件。 – davidfowl 2012-02-14 10:57:29

+0

你當然是對的。必須在所有連線完成後調用hub.start()。 – iacoware 2012-02-14 11:04:28