2013-07-28 3 views
15

Я пытаюсь отладить концентратор SignalR и заметил, что конструктор получает вызов несколько раз, даже с одним клиентом. Это ожидаемое поведение? Я ожидал, что конструктор будет вызван только один раз для инициализации класса, но я несколько раз ударяю о точку останова.Когда называется конструктор концентратора SignalR?

+0

не уверен, но я думаю, что его новый по каждому запросу – MEYWD

ответ

17

В экземпляре компонента SignalR будет создан для каждого запроса. Так что неважно, есть ли только один клиент или больше. Фактически, концентратор является абстракцией над PersistentConnection, если вы хотите более точный контроль над вещами, происходящими за сценой, вы можете использовать PersistentConnection. Проверьте: https://github.com/SignalR/SignalR/wiki/PersistentConnection

+2

Даже больше. Один раз за вызов, который может быть больше, чем за запрос (в случае веб-карт) – davidfowl

5

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