Results site in .NET Core

This commit is contained in:
Elton Stoneman
2018-09-26 10:29:39 +01:00
parent 879e5bc477
commit 985af62bb1
14 changed files with 165 additions and 42 deletions

View File

@ -0,0 +1,47 @@
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);
}
}
}