无法通过两个集线器获得SignalR的工作

问题描述:

我已经开始在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”失败(没有错误)。 如果我反转初始化的顺序当然会发生相反的情况。

我错过了什么?

为什么要启动集线器连接两次。所有集线器都有一个连接,因此您只需要调用$ .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