using Microsoft.AspNetCore.SignalR;
using System.Security.Claims;
using System.Threading.Tasks;

public class MyHub : Hub
{
    public override async Task OnConnectedAsync()
    {
        var userId = Context.User.FindFirstValue(ClaimTypes.NameIdentifier);
        await Groups.AddToGroupAsync(Context.ConnectionId, userId);

        await base.OnConnectedAsync();
    }
}
////////////////////////////////////////////////////////////////////
public async Task SendMessageToUser(string userId, string message)
{
    await Clients.Group(userId).SendAsync("ReceiveMessage", message);
}