Вызов метода 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();

который был бы уникальным.

Другие вопросы по тегам