SignarR .Net Core.Получать ответ от клиентов синхронно - PullRequest
0 голосов
/ 27 февраля 2019

Мы разрабатываем приложение ASP.Net Core с SignalR.

У нас есть ApiController, который должен предоставлять доступ клиентам SignalR, подключенным к хабу SignalR

Что нам нужно для реализации следующего рабочего процесса:

  1. Действие пользовательского триггера ApiController
  2. Из действия мы отправляем запрос в концентратор SignalR одному из подключенных клиентов
  3. Клиент SignalR обрабатывает запрос и отправляет ответ
  4. Из действия мы понимаем, что был получен ответ инам нужно вернуться обратно к пользователю

Проблема для нас заключается в том, что для ASP.Net Core нет способа выполнить запросы и получить ответ, и мы в основном должны запустить запрос к клиенту SignalR идождитесь ответа на одной из конечных точек концентратора SingalR.Теперь мы генерируем событие из конечной точки концентратора и уведомляем действие контроллера о получении ответа.

Вот некоторый псевдокод:

public class TheController: Controller
{
    private readonly IHubContext<TheHub> _hub;
    public string TheAction (string request)
    {
        _hub.Client.Group("xxxxx").SendAsync("request-endpoint", request);
        //subscribe for event in TheHub
        //wait when event was fired by TheHub
        return [response_from_TheHub]
    }
}

public class TheHub : Hub
{
    public void OnRequestProcessed (string response)
    {
       //fire event 
    }
}

Мы ищем правильный подход, который мы могли быреализовать шаблон запроса-ответа через SignalR

Также обратите внимание, что мы используем Microsoft.AspNetCore.SignalR (.Net Core) nuget.

...