1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- using System;
- using System.Timers;
- using Microsoft.AspNetCore.SignalR;
- using Microsoft.Extensions.Configuration;
- using Result.Hubs;
- using Result.Models;
- namespace Result.Timers
- {
- public class PublishResultsTimer
- {
- private readonly IHubContext<ResultsHub> _hubContext;
- private readonly Timer _timer;
- //TODO- temp
- private static Random _Random = new Random();
- public PublishResultsTimer(IHubContext<ResultsHub> hubContext, IConfiguration configuration)
- {
- _hubContext = hubContext;
- var publishMilliseconds = configuration.GetValue<int>("ResultsTimer:PublishMilliseconds");
- _timer = new Timer(publishMilliseconds)
- {
- Enabled = false
- };
- _timer.Elapsed += PublishResults;
- }
- public void Start()
- {
- if (!_timer.Enabled)
- {
- _timer.Start();
- }
- }
- private void PublishResults(object sender, ElapsedEventArgs e)
- {
- var model = new ResultsModel
- {
- OptionA = _Random.Next(0, 100),
- OptionB = _Random.Next(0, 100)
- };
- model.VoteCount = model.OptionA + model.OptionB;
- _hubContext.Clients.All.SendAsync("UpdateResults", model);
- }
- }
- }
|