123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- using Microsoft.Extensions.Configuration;
- using MinecraftStatus;
- using VeloeMonitorDataCollector.Dependencies;
- using VeloeMonitorDataCollector.Models;
- using Microsoft.AspNetCore.Builder;
- using Microsoft.AspNetCore.Hosting;
- using Microsoft.Extensions.DependencyInjection;
- using Microsoft.AspNetCore.SignalR;
- using System.Text.Json;
- using Serilog;
- using System.Net;
- using static System.Runtime.InteropServices.JavaScript.JSType;
- using System;
- namespace VeloeMonitorDataCollector.DatabaseConnectors
- {
- internal class SignalRConnector : IDataSendable
- {
- WebApplication app;
- public SignalRConnector(in IConfigurationSection section, in Serilog.ILogger logger)
- {
- string url = section["url"];
- if (string.IsNullOrEmpty(url))
- url = "http://*:5000";
- var builder = WebApplication.CreateBuilder();
- builder.WebHost.UseUrls(url);
- builder.Services.AddSignalR();
- builder.Services.AddSingleton<DataSender>();
- builder.Host.UseSerilog(logger);
- app = builder.Build();
- app.MapHub<DataHub>("/hubs/data");
- app.RunAsync();
- }
- public bool CheckGameServer(in string name, in string type)
- {
- return true;
- }
- public bool CheckHardware(in Dictionary<string, float> input)
- {
- return true;
- }
- public void Close()
- {
- app.StopAsync();
- }
- public void SendGamespy3(in Gs3Status.Status data, in string name)
- {
- app.Services.GetService<DataSender>().SendGamespy3(data, name);
- }
- public void SendGamespy2(in Gs2Status.Status data, in string name)
- {
- app.Services.GetService<DataSender>().SendGamespy2(data, name);
- }
- public void SendHardware(in Dictionary<string, float> data)
- {
- app.Services.GetService<DataSender>().SendHardware(data);
- }
- public void SendMinecraft(in McStatus data, in string name)
- {
- app.Services.GetService<DataSender>().SendMinecraft(data, name);
- }
- public void SendSteam(in SteamData data, in string name)
- {
- app.Services.GetService<DataSender>().SendSteam(data, name);
- }
- public void SendUrl(HttpWebResponse data, string name)
- {
- app.Services.GetService<DataSender>().SendUrl(data, name);
- }
- }
- public class DataSender
- {
- IHubContext<DataHub> _hubContext;
- Serilog.ILogger _logger;
- public DataSender(IHubContext<DataHub> hubContext, ILogger logger)
- {
- _hubContext = hubContext;
- _logger = logger;
- }
- public void SendGamespy3(in Gs3Status.Status data, in string name)
- {
- _hubContext.Clients.Groups(name).SendAsync($"Update{name}",JsonSerializer.Serialize(data));
- }
- public void SendGamespy2(in Gs2Status.Status data, in string name)
- {
- _hubContext.Clients.Groups(name).SendAsync($"Update{name}", JsonSerializer.Serialize(data));
- }
- public void SendHardware(in Dictionary<string, float> data)
- {
- _hubContext.Clients.Groups("hardware").SendAsync($"Update", JsonSerializer.Serialize(data));
- }
- public void SendMinecraft(in McStatus data, in string name)
- {
- _hubContext.Clients.Groups(name).SendAsync($"Update{name}", JsonSerializer.Serialize(data));
- }
- public void SendSteam(in SteamData data, in string name)
- {
- _hubContext.Clients.Groups(name).SendAsync($"Update{name}", JsonSerializer.Serialize(data));
- }
- internal void SendUrl(HttpWebResponse data, string name)
- {
- _hubContext.Clients.Groups(name).SendAsync($"Update{name}", JsonSerializer.Serialize(data));
- }
- }
- public class DataHub : Hub
- {
- public async Task SendMessage(string user, string message)
- {
- await Clients.All.SendAsync("ReceiveMessage", user, message);
- }
- public async Task ConnectToGroup(string groupName)
- {
- await Groups.AddToGroupAsync(Context.ConnectionId, groupName);
- }
- public async Task DisconnectFromGroup(string groupName)
- {
- await Groups.RemoveFromGroupAsync(Context.ConnectionId, groupName);
- }
- }
- }
|