C# 信号器:为returnvalue调用方法

C# 信号器:为returnvalue调用方法,c#,signalr,C#,Signalr,我已经能够使用信号器将消息推送到客户端,并将消息从客户端返回到服务器。。。到目前为止,这是一件好事 我想做的是,这可能只是信号员无法处理的事情。。。是调用一个响应 信号器是否允许来自调用的响应?如果是这样的话,我可以向客户发出请求,并使用第一个响应吗 我看到了对HubResponse和task.result的引用,但我不太明白如何让hub方法从客户端返回值 我玩了很多次,或者得到了AggregateException,或者从Task到Task的无效强制转换连接的客户端只是广播的。也就是说,服务器

我已经能够使用信号器将消息推送到客户端,并将消息从客户端返回到服务器。。。到目前为止,这是一件好事

我想做的是,这可能只是信号员无法处理的事情。。。是调用一个响应

信号器是否允许来自调用的响应?如果是这样的话,我可以向客户发出请求,并使用第一个响应吗

我看到了对HubResponse和task.result的引用,但我不太明白如何让hub方法从客户端返回值


我玩了很多次,或者得到了AggregateException,或者从
Task
Task

的无效强制转换连接的客户端只是广播的。也就是说,服务器不能直接向它们发出请求。因此,您需要做一些事情,比如使用一个Hub方法,其中一个客户机可以请求其他人完成请求,然后Hub将该请求广播给所有连接的客户机,然后无论哪个客户机首先响应,您都可以广播回原始客户机。您需要在中心中维护自己的状态,以便将请求/响应定向到正确的受众。我还认为,一旦你收到你的第一个回复,你会希望告诉所有其他客户不要打扰/停止尝试回答这个问题


如果没有更多的细节,我不确定我是否能为这个问题指定一个精确的体系结构。首先,是否有任何客户能够响应任何请求,或者您会对客户进行分类?如果您可以对客户机进行分类,那么您可以确保只使用组广播对他们有意义的请求。接下来,您基本上是要定义一个包含所有问题的接口,还是希望集合能够在不随时间改变中心的情况下进行扩展?这将决定您是使用强类型Hub方法,还是只使用某种类型的泛型
AskQuestion(stringquestionid)
。如果是前者,那么您可能不会像前面提到的那样使用组,而只是为每个请求类别设置不同的集线器。

这并不是我的意思,但这是我没有更好地解释的错误。。。例如,在您的示例中,您希望中心查询客户机以确定我的方法的值,如`public int MyMethod(){return Clients.DoSomeCalculation();}'我理解其中的复杂性,你认为谁的回答是“答案”。。。但在我的情况下,我应该总是有一个x类型的客户端来处理请求。啊,是的,这还不完全清楚,对不起。我可以修改我的答案来匹配。谢谢。我很担心这就是它的工作原理。。。很不幸,但我能想出一个解决办法。感谢您的意见。