0

我一直在浏览最近的 signalr 文档,偶然发现了名为Streaming的新功能。我也是,而且我设法让它与一个 JS 客户端一起运行。但是,我仍然不清楚何时使用它。

1-是否ChannelReader将数据流式传输到单个客户端?

2-如果是,与打电话有什么区别this.Clients.Caller.Invoke()

3-假设我正在收听外部实时馈送,例如证券交易所,是否建议使用信号流?

4-根据这篇文章,作者住在一个Task.Run()。那么,如果我需要使用流向 1000 个客户推送实时提要,这如何扩展?通常使用信号流是否存在任何可扩展性问题?

4

1 回答 1

2

1- ChannelReader 是否将数据流式传输到单个客户端?

是的。

2-如果是,与执行 this.Clients.Caller.Invoke() 有什么区别

您一次只能调用一个方法(按顺序)。只要您在调用中,其余的将排队等待该连接,直到前一个连接完成。使用流方法,您可以启动流并将数据泵送到客户端,同时仍然在同一个集线器上调用其他方法。

3-假设我正在收听外部实时馈送,例如证券交易所,是否建议使用信号流?

流用于从客户端操作触发的流式传输数据。您仍然可以通过调用 IHubContext 上的方法来进行未经请求的(不是来自客户端的)流式传输。

4- 根据这篇文章,作者生活在 Task.Run() 中。那么,如果我需要使用流向 1000 个客户推送实时提要,这如何扩展?通常使用信号流是否存在任何可扩展性问题?

它可以很好地扩展。Task.Run 启动 Stream,但您永远不会持有线程作为人质。

于 2018-10-04T07:39:12.943 回答