2

使用 SignalR 将消息推送到客户端并从客户端推送回服务器,我已经能够取得相当大的进展......到目前为止,这一直是一件幸事。

我不想做的事情,这可能只是 SignalR 无法处理的事情……是调用响应。

SignalR 是否允许调用响应?如果是这样,我可以向客户提出请求,并且只使用第一个响应吗?

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

我玩了很多次,要么得到了 AggregateException,要么得到了无效的Task<Object>转换Task<MyType>

4

1 回答 1

1

连接的客户端仅广播。那就是服务器不能直接向它们发出请求。因此,您需要执行类似 Hub 方法之类的操作,其中一个客户端可以请求其他人完成请求,然后 Hub 将该请求广播给所有连接的客户端,然后无论哪个客户端首先响应,您都可以将其广播回原始客户端。您需要在 Hub 中维护自己的状态,以将请求/响应明显地定向到正确的受众。我还认为,一旦您收到第一个答复,您就会想告诉所有其他客户不要打扰/停止尝试回答问题。

如果没有更多细节,我不确定我是否可以为此规定一个确切的架构。首先,是否任何客户都能够响应任何请求,或者您会对客户进行分类?如果您可以对客户端进行分类,那么您可以确保仅使用组广播对他们有意义的请求。接下来,您基本上是在尝试定义所有可以提出的问题的界面,还是希望集合能够在不随时间改变 Hub 的情况下扩展?这将决定您是使用强类型的 Hub 方法,还是只使用某种通用的AskQuestion(string questionId). 如果是前者,那么您可能不会使用前面提到的组,而是只为每个请求类别设置不同的集线器。

于 2012-07-10T17:22:48.683 回答