2013-04-15 2 views
0

У меня был один сигнальный центр в течение последнего года, без проблем. сегодня, когда вы пытаетесь добавить второй концентратор, его просто не работает. Я выполнил те же шаги, что и первый, безрезультатно.signalr пустые данные соединения на моем втором концентраторе

вот выход из моих ~/signalr/концентраторы

// Create hub signalR instance 
$.extend(signalR, { 
    errorPageHub: { 
     _: { 
      hubName: 'Web.Infrastructure.Logging.Broadcasting.ErrorPageHub', 
      ignoreMembers: ['error', 'event', 'warning', 'success', 'namespace', 'ignoreMembers', 'callbacks'], 
      connection: function() { return signalR.hub; } 
     }, 

     error: function (error, callback) { 
      return serverCall(this, "Error", $.makeArray(arguments)); 
     }, 

     event: function (eventDescription, callback) { 
      return serverCall(this, "Event", $.makeArray(arguments)); 
     }, 

     warning: function (warning, callback) { 
      return serverCall(this, "Warning", $.makeArray(arguments)); 
     }, 

     success: function (success, callback) { 
      return serverCall(this, "Success", $.makeArray(arguments)); 
     } 
    }, 
    pulsePageHub: { 
     _: { 
      hubName: 'Web.Infrastructure.Logging.Broadcasting.PulsePageHub', 
      ignoreMembers: ['tenderAdded', 'tenderUpdated', 'projectAdded', 'projectUpdated', 'namespace', 'ignoreMembers', 'callbacks'], 
      connection: function() { return signalR.hub; } 
     }, 

     tenderAdded: function (message, callback) { 
      return serverCall(this, "TenderAdded", $.makeArray(arguments)); 
     }, 

     tenderUpdated: function (message, callback) { 
      return serverCall(this, "TenderUpdated", $.makeArray(arguments)); 
     }, 

     projectAdded: function (message, callback) { 
      return serverCall(this, "ProjectAdded", $.makeArray(arguments)); 
     }, 

     projectUpdated: function (message, callback) { 
      return serverCall(this, "ProjectUpdated", $.makeArray(arguments)); 
     } 
    } 
}); 

на моей странице с помощью "errorPageHub", когда я называю

$.connection.hub.start({ transport: 'longPolling' }, function() { 
     console.log('connection started!'); 
    }); 

следующее выводится на Firebug ::

connectionData [{"name":"Web.Infrastructure.Logging.Broadcasting.ErrorPageHub","methods":["addError","addSuccess","addWarning","addEvent"]}] 
connectionId 1806c3f7-e2e0-4ec7-9eb1-670a43fac912 
transport longPolling 

connectiondata соответствует хабу, который я инициализирую на своей странице. теперь на странице, где я пытаюсь использовать pulsePageHub, выдается на FireBug при использовании того же вызова connection.hub.start (обратите внимание, что они находятся на разных страницах, у меня есть только один вызов connection.start на странице)

connectionData [] 
connectionId 05b2354d-63ac-469a-bf0b-bd4e06e56426 
transport longPolling 

я инициализация pulseHub в точно таких же, как я делаю свою errorPageHub, но connectiondata всегда пусто, и поэтому он никогда не поднимает никаких передач. если я добавлю на эту страницу инициализацию errorPageHub, единственным отправленным сообщением является errorPageHub.

как инициализировать этот второй концентратор для приема трансляций? этот вопрос очень похож на один поставленный here, но она никогда не была решена

Мои концентраторов объявлены на стороне клиента, как так ::

 var error = $.connection.errorPageHub; 

    error.addError = function (message) { 
     appendMessage(message, "error"); 

    }; 

    error.addSuccess = function (message) { 
     appendMessage(message, "info"); 
    }; 

    error.addWarning = function (message) { 
     appendMessage(message, "warning"); 
    }; 


    error.addEvent = function (message) { 
     appendMessage(message, "info"); 
    }; 
} 

и мой пульс страница хаб вот так:

var pulse = $.connection.pulsePageHub; 

    pulse.tenderAdded = function (message) { 
     appendMessage(message, "info"); 
     alert("hi"); 
    }; 

    pulse.tenderUpdated = function (message) { 
     appendMessage(message, "warning"); 
     alert("hi"); 
    }; 

    pulse.projectAdded = function (message) { 
     appendMessage(message, "info"); 
     alert("hi"); 
    }; 

    pulse.projectUpdated = function (message) { 
     appendMessage(message, "warning"); 
     alert("hi"); 
    }; 

ответ

3

Какую версию SignalR вы используете?

Перед подключением необходимо подключить обработчики событий для интересующего вас концентратора. То есть:

hub.client.something = function() {};

В противном случае это не сработает.

+0

его более старая версия, нет .client. мой узел страницы ошибки инициализирован так var error = $ .connection.errorPageHub; error.addError = function (message) { appendMessage (message, "error"); }; error.addSuccess = function (message) { appendMessage (message, "info"); }; ошибка.addWarning = функция (сообщение) { appendMessage (сообщение, «предупреждение»); }; погрешность.addEvent = функция (сообщение) { appendMessage (сообщение, «информация»); }; – spaceman

+0

не может получить код, чтобы хорошо выглядеть в комментарии :(обновит мой пост – spaceman

+1

Обновление до новой версии – davidfowl