Создание одного и того же концентратора SignalR для всех клиентов

Я только начинаю тестировать SignalR для мониторинга приложений. У меня есть элемент управления, который звонит в концентратор на стороне клиента. Я заметил, что каждый раз, когда клиент делает Connection.Hub.Start(), он создает новый экземпляр концентратора на сервере, мне нужно постоянно обновлять свой элемент управления, поэтому я не хочу, чтобы он создавал новый концентратор для каждого из них.

Есть ли способ создать единый концентратор для всех клиентов или я что-то упускаю?


person Wasim    schedule 16.07.2012    source источник


Ответы (1)


Экземпляр концентратора создается для каждого запроса так же, как экземпляр страницы ASP.NET создается для каждого запроса в WebForms, контроллер создается для каждого запроса в ASP.NET MVC или экземпляр службы WCF создается для каждого запроса службы при использовании InstanceMode.PerCall.

Если вы хотите поддерживать общее состояние между запросами/экземплярами концентратора, вам нужно будет использовать статическое поле или какую-либо другую, более продвинутую форму совместного использования состояния (например, одноэлементную инъекцию зависимостей).

person Drew Marsh    schedule 16.07.2012
comment
Спасибо, это ясно. При каждом вызове сервер выполняет запрос и завершает работу. но здесь у меня есть ситуация, когда он должен удерживать соединение клиентов, чтобы передавать им данные. В противном случае, как SinalR поддерживает всех подключенных клиентов, если у каждого вызова есть новый концентратор. - person Wasim; 17.07.2012
comment
Концентратор — это уровень абстракции, который находится над аспектами подключения нижнего уровня SignalR и представляет вам запросы в этой более простой модели выполнения «экземпляр на запрос». Если вы хотите работать на более низком уровне, работайте напрямую с классом PersistentConnection. Концентраторы и их методы на самом деле вызываются через HubDispatcher, который является подклассом PersistentConnection. Это гораздо более сложный слой для работы, и именно поэтому абстракция концентраторов существует в первую очередь. - person Drew Marsh; 17.07.2012
comment
Можете ли вы показать нам пример кода, чтобы не создавать экземпляр каждый раз? - person mohamed elyamani; 31.03.2020