41 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			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;
 | 
						|
}
 |