Вы можете отправлять уведомления указанному пользователю, если вам известен идентификатор подключения пользователя или добавить подключенного пользователя в группу.
В концентраторе, если вы знаете идентификатор подключения:
await this.Clients.Client("connectionId").SendAsync("MethodName", "The message");
Вы также можете добавить указанного пользователя в группу и затем отправить сообщение группе:
await this.Groups.AddToGroupAsync("connectionId", "groupName");
await this.Clients.Group("groupName").SendAsync("MethodName", "The message");
Подробнее об этом можно прочитать в этой Документации Microsoft .
Обновление:
Чтобы ответить на ваш обновленный вопрос, вы должны предоставить атрибут авторизации своему концентратору, чтобы иметь имя и другие параметры
[Authorize]
public class NotificationHub : Hub
{
public override async Task OnConnectedAsync()
{
await Groups.AddToGroupAsync(Context.ConnectionId, Context.User.Identity.Name);
await base.OnConnectedAsync();
}
public override async Task OnDisconnectedAsync(Exception ex)
{
await Groups.RemoveFromGroupAsync(Context.ConnectionId, Context.User.Identity.Name);
await base.OnDisconnectedAsync(ex);
}
}
И затем на вашем Angular клиенте вы должны предоставить токен для подключения к вашему хабу, например:
private configureSignalR(token: string) {
this.hubMessageConnection = new signalR.HubConnectionBuilder()
.configureLogging(signalR.LogLevel.Error).withUrl(this.signalRUrl + "/notifications",
{
accessTokenFactory: () => token
})
.withAutomaticReconnect()
.build();
}
Подробнее о Аутентификация и авторизация можно прочитать в документации Microsoft .