无法通过两个集线器获得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()一次。
它不起作用。还有一个check in signalR.start(),它检查是否已经有可用的传输并立即解决承诺。大图书馆BTW :-) – iacoware 2012-02-14 10:49:12
什么不行?呼叫开始一次?代码中存在一系列问题。在打电话开始之前,您需要订阅所有集线器上的所有事件。 – davidfowl 2012-02-14 10:57:29
你当然是对的。必须在所有连线完成后调用hub.start()。 – iacoware 2012-02-14 11:04:28