无法使SignalR与两个集线器配合使用

时间:2012-02-14 10:33:33

标签: c# asp.net-mvc-3 signalr

我开始挖掘SignalR 0.4并遇到问题。我想在同一页面上有两个不同的集线器,以保持简单:

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

很简单,但我不能让它们一起工作。在此示例中,“chat”正常工作,“chat2”失败(没有错误)。 如果我当然颠倒了初始化的顺序,则会发生相反的情况。

我错过了什么?

1 个答案:

答案 0 :(得分:3)

为什么要两次启动集线器连接。所有集线器都有一个连接,因此您只需要调用$ .connection.hub.start()一次。