Мы разрабатываем приложение ASP.Net Core с SignalR.
У нас есть ApiController, который должен предоставлять доступ клиентам SignalR, подключенным к хабу SignalR
Что нам нужно для реализации следующего рабочего процесса:
- Действие пользовательского триггера ApiController
- Из действия мы отправляем запрос в концентратор SignalR одному из подключенных клиентов
- Клиент SignalR обрабатывает запрос и отправляет ответ
- Из действия мы понимаем, что был получен ответ инам нужно вернуться обратно к пользователю
Проблема для нас заключается в том, что для 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.