2015-05-01 1 views
1

Я смущен о правиле принятия решения о том, какой Концентратор для подключения или без использования SignalR.Решите, какой концентратор SignalR подключиться к

В javascript, если я пишу $.connection.hub.start() и говорю, что у меня есть два концентратора (hub1 и hub2), то какой концентратор подключается? Или они оба связаны?

ответ

0

Оба будут подключены. Если вы проверяете документы: http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-server#multiplehubs

  • Вы можете определить несколько классов концентраторов в приложении. Когда вы это сделаете, соединение будет общим, но группы будут раздельными:

Все клиенты будут использовать тот же URL-адрес, чтобы установить соединение SignalR с вашей службой («/ signalr» или ваш собственный URL-адрес, если вы указали один) и это соединение используется для всех концентраторов, определенных службой.

Нет разницы в производительности для нескольких концентраторов по сравнению с определением всех функциональных возможностей концентратора в одном классе.

  • Все концентраторы получают одну и ту же информацию HTTP-запроса.

Поскольку все концентраторы используют одно и то же соединение, единственная информация HTTP-запроса, которую получает сервер, - это то, что приходит в исходном HTTP-запросе, который устанавливает соединение SignalR. Если вы используете запрос соединения для передачи информации от клиента на сервер, указав строку запроса, вы не можете предоставить разные строки запросов для разных концентраторов. Все концентраторы получат ту же информацию.

+0

большое спасибо – user3033715

0

Я нашел следующие данные от руководства клиента js. «Наличие метода клиента на прокси-хаба является то, что говорит SignalR, чтобы вызвать OnConnected события»

Примечания: Обычно регистрируют обработчик событий перед вызовом метода запуска, чтобы установить соединение. Если вы хотите зарегистрировать некоторые обработчики событий после установления соединения, вы можете это сделать, но перед вызовом метода start вы должны зарегистрировать хотя бы один из ваших обработчиков событий. Одна из причин этого заключается в том, что в приложении может быть много концентраторов, но вы не хотите запускать событие OnConnected для каждого концентратора, если вы собираетесь использовать только один из них. Когда соединение установлено, присутствие клиентского метода на прокси-хабе - это то, что сообщает SignalR запускать событие OnConnected. Если вы не регистрируете обработчики событий перед вызовом метода start, вы сможете вызывать методы на концентраторе, но метод OnConnected хаба не будет вызываться, и никакие клиентские методы не будут вызываться с сервера.