Я новичок в SignalR и хотел бы создать такое приложение - каждую секунду хаб отправляет текущее время всем подключенным клиентам.
Я нашел учебное пособие, но оно для .Net Framework (не Core): https://docs.microsoft.com/en-us/aspnet/signalr/overview/getting-started/tutorial-high-frequency-realtime-with-signalr Так что, с одной стороны, я не знаю, как перевести его на .Net Core SignalR, с другой стороны, я не знаю, как написать его с нуля (ограничивающим условием является тот факт, чтоКонцентратор - это энергозависимая сущность, поэтому у меня не может быть состояния).
Мне нужно что-то статичное (я полагаю) с состоянием - скажем, Broadcaster, когда я создаю какое-то циклическое действие, которое, в свою очередь, отправляет обновления вклиентов.Если такой подход в порядке, как инициализировать этот Broadcaster?
В настоящее время я добавил такой статический класс:
public static class CrazyBroadcaster
{
public static void Initialize(IServiceProvider serviceProvider)
{
var scope = serviceProvider.CreateScope();
var hub = scope.ServiceProvider.GetRequiredService<IHubContext<ChatHub>>();
var sub = Observable.Interval(TimeSpan.FromSeconds(1)).Subscribe(_ => hub.Clients.All.SendAsync("Bar", DateTimeOffset.UtcNow));
}
}
Да, я знаю, что это утечка .Я называю этот метод в конце Startup.Configure
, вероятно, здесь множество нарушений, но пока это мой лучший шанс.