2012-02-14 2 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(); 
    }); 
}); 

достаточно просто, но я не могу заставить их работать вместе , В этом примере «чат» работает правильно и «chat2» терпит неудачу (без ошибок). Если я обратный порядок инициализации, конечно, происходит наоборот.

Что мне не хватает?

ответ

3

Почему вы начинаете соединение концентратора дважды. Для всех концентраторов есть одно соединение, поэтому вам нужно только один раз вызвать $ .connection.hub.start().

+0

Это не работает. Там также есть чек в signalR.start(), которые проверяют, есть ли уже доступный транспорт, и немедленно разрешите обещание. Великая библиотека BTW :-) – iacoware

+0

Что не работает? Вызов запуска один раз? У вас есть куча проблем с кодом. Вам необходимо подписаться на все события на всех концентраторах до начала вызова. – davidfowl

+0

Ты (конечно) прав. hub.start() должен быть вызван после завершения проводки. – iacoware

Смежные вопросы