AspNetCore SignalR 流式澄清

问题描述 投票:0回答:1

我一直在浏览最近的信号器文档,并且偶然发现了名为 Streaming 的新功能。我也设法让它与 JS 客户端一起运行。不过我还是不清楚什么时候用它。

1-

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

2- 如果是,与打电话有什么区别

this.Clients.Caller.Invoke()

3- 假设我正在收听外部实时提要,例如股票交易所,推荐使用signalr流吗?

4-根据这篇文章,作者生活在

Task.Run()
中。那么,如果我需要使用流将实时源推送到 1000 个客户端,那么这种扩展性如何实现呢?通常使用信号流是否存在可扩展性问题?

c# asp.net-core signalr streaming system.threading.channels
1个回答
2
投票

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

是的。

2-如果是,与这样做有什么区别。Clients.Caller.Invoke()

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

3- 假设我正在收听外部实时提要,例如股票交易所,推荐使用signalr流吗?

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

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

它的缩放比例很好。 Task.Run 启动 Stream,但您永远不会劫持线程。

© www.soinside.com 2019 - 2024. All rights reserved.