SignarR .Net核心。同步接收客户的回应

时间:2019-02-26 21:14:43

标签: asp.net-core signalr

我们正在使用SignalR开发ASP.Net Core应用程序。

我们有一个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。

0 个答案:

没有答案