Files
Engine-Template/Platforms/Server/Endpoints.cs

41 lines
1.1 KiB
C#

using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Engine.Core;
using Engine.Systems.Network;
namespace MyUniverse.Platforms.Server;
public class Endpoints : Behaviour, IFirstFrameUpdate, ILastFrameUpdate
{
private INetworkCommunicatorServer? server = null!;
public Endpoints()
{
Task.Run(() =>
{
WebApplicationBuilder builder = WebApplication.CreateBuilder();
builder.Services.AddHealthChecks();
WebApplication app = builder.Build();
app.MapHealthChecks("/health");
app.MapGet("/stats", GetStats);
app.Run($"http://0.0.0.0:{Environment.GetEnvironmentVariable("PORT") ?? "8888"}");
});
}
private IResult GetStats() => Results.Json(new { Count = server?.Connections.Count ?? 0 });
public void FirstActiveFrame() => server = Universe.FindRequiredBehaviour<INetworkCommunicatorServer>();
public void LastActiveFrame() => server = null;
}