Как я могу отправить сообщение signalR конкретному пользователю по userId с контроллера? - PullRequest
0 голосов
/ 11 апреля 2019

Я не могу отправить уведомление конкретному пользователю с контроллера.

Мой контроллер:

public class SomeController : ControllerBase
{
    private readonly IHubContext<NotificationHub> _hubContext;
    public SomeController(IHubContext<NotificationHub> hubContext)
    {
        _hubContext = hubContext;
    }

    public async Task SomeMethod()
    {

        //it works 
        await _hubContext.Clients.All.SendAsync("sendMessage", msg);

        //it doesn't work
        await _hubContext.Clients.User(userId).SendAsync("sendMessage", msg);
        //it also doesn't work 
        await _hubContext.Clients.Client(userId).SendAsync("sendMessage", msg);
    }
}

К сожалению, IHubContext имеет некоторые недостатки.В собственности Клиентов доступны только Клиенты.Все - то есть мы можем отправить сообщение только всем клиентам, и в классе-концентраторе нет таких свойств, как Other или Caller.Кроме того, мы не можем получить идентификатор соединения от IHubContext.

Есть ли какой-то другой способ сделать это?Или это возможно только с SQL-зависимостью?

...