Streaming data using SignalR
So far, we have seen how SignalR can broadcast structured messages to one or more clients. This works well with data that is relatively small and structured and exists completely at a point in time. But what about data that comes in parts over time?
Streams can be used for these scenarios. SignalR supports both service-to-client (downloading data from a stream) and client-to-service (uploading data to a stream).
To enable download streaming, a hub method must return IAsyncEnumerable<T>
(only supported by C# 8 or later) or ChannelReader<T>
.
To enable upload streaming, a hub method must accept a parameter of type IAsyncEnumerable<T>
(only supported by C# 8 or later) or ChannelReader<T>
.
Defining a hub for streaming
Let’s add some streaming methods to see how they work in action:
- In the
Northwind.Common
project, add a new file namedStockPrice.cs
and modify its content to define arecord
for stock...