我已经能够使用SignalR将消息推送到客户端以及从客户端返回到服务器......并且到目前为止一直是一种祝福。
我不想做什么,这可能只是SignalR无法处理的......是为了响应而调用。
SignalR是否允许来自调用的响应?如果是这样,我可以向客户提出请求,并使用第一个响应吗?
我看到了对HubResponse和task.result的引用,但我还没有看到如何让hub方法从客户端返回值。
我玩了很多,并且得到了AggregateException,或从Task<Object>
到Task<MyType>
答案 0 :(得分:1)
连接的客户端仅限广播。那就是服务器无法直接向他们发出请求。因此,您需要执行类似于Hub方法的操作,其中一个客户端可以请求其他人满足请求,然后Hub将该请求广播到所有连接的客户端,然后无论哪个客户端响应,您都可以广播回原始客户端。您需要在Hub中维护自己的状态,以明确地将请求/响应定向到正确的受众。我还认为,只要您收到第一个回复,您就会想告诉所有其他客户不要打扰/停止尝试回答这个问题。
我不确定如果没有更多细节,我可以为此规定一个确切的架构。对于初学者,任何客户是否能够回复任何请求或者您是否会对客户进行分类?如果您可以对客户端进行分类,那么您可以确保只使用组广播对他们有意义的请求。接下来,您基本上是在尝试定义可以提出的所有问题的界面,还是希望集合能够在不更改Hub的情况下进行扩展?这将决定您是使用强类型Hub方法还是只使用某种泛型AskQuestion(string questionId)
。如果是前者,那么您可能不会像前面提到的那样使用组,而只是为每个请求类别设置不同的集线器。