Вызов метода Caller в концентраторе SignalR вне контекста концентратора
У меня есть вопрос о методе Caller в SignalR. В методе хаба мы можем вызвать функцию на стороне клиента следующим образом.
Clients.Caller.addContosoChatMessageToPage(name, message);
но когда я использую для вызова его из-за пределов контекста хаба, он не найден или не реализован?? как это..
var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
context.Clients.Caller.reportProgress(recordCount,totalCount);
Может кто-то просветить меня в этой части или есть другой способ реализовать это.. сейчас я использую для реализации этого
var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
context.Clients.User(CurrentUser.Usernm).reportProgress(recordCount,totalCount);
но теперь мы не являемся аутентификацией на основе утверждений, поэтому возникнет проблема, если будет зарегистрирован тот же usernm.
1 ответ
Вне концентратора, очевидно, нет звонящего, потому что сервер - тот, кто инициирует.
Если вы беспокоитесь об уникальных именах пользователей, вам нужно реализоватьIUserIdProvider
или вам нужно каким-либо другим способом управлять идентификаторами соединений для каждого пользователя. Тогда вы могли бы позвонить
context.Clients.Client(connectionId).reportProgress();
который был бы уникальным.