/
githubmirror
/
aspnetcore
Обзор
Документация
Войти
/
githubmirror
/
aspnetcore
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/SignalR/samples/SignalRSamples/Hubs/Streaming.cs
47 строк
1 KB
campersau
Fix SignalR Streaming example (#42281)
20 июн 2022, 18:55
Не верифицирован
20 июн 2022, 18:55
f1969c2
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Reactive.Linq; using System.Threading.Channels; using Microsoft.AspNetCore.SignalR; namespace SignalRSamples.Hubs; public class Streaming : Hub { public async IAsyncEnumerable<int> AsyncEnumerableCounter(int count, double delay) { for (var i = 0; i < count; i++) { yield return i; await Task.Delay(TimeSpan.FromMilliseconds(delay)); } } public ChannelReader<int> ObservableCounter(int count, double delay) { var observable = Observable.Interval(TimeSpan.FromMilliseconds(delay)) .Select((_, index) => index) .Take(count); return observable.AsChannelReader(Context.ConnectionAborted); } public ChannelReader<int> ChannelCounter(int count, double delay) { var channel = Channel.CreateUnbounded<int>(); Task.Run(async () => { for (var i = 0; i < count; i++) { await channel.Writer.WriteAsync(i); await Task.Delay(TimeSpan.FromMilliseconds(delay)); } channel.Writer.TryComplete(); }); return channel.Reader; } }