From 1af452928e09e27e3e31dbeb8fca891f988921b8 Mon Sep 17 00:00:00 2001 From: Speidy674 Date: Tue, 23 Aug 2022 01:28:33 +0200 Subject: [PATCH] Fixed Load Balancer MasterList --- .../LRM_LoadBalancer/DataContainer.cs | 5 +---- .../LRM_LoadBalancer/Endpoint/Endpoint.cs | 9 ++++++++- .../LRM_LoadBalancer/Endpoint/EndpointExtra.cs | 14 ++++++++++++-- .../LRM_LoadBalancer/Program/Program.cs | 1 + .../LRM/RelayHandler/RelayHandlerRoomMethods.cs | 2 +- ServerProject-DONT-IMPORT-INTO-UNITY/LRM/Room.cs | 1 + 6 files changed, 24 insertions(+), 8 deletions(-) diff --git a/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/DataContainer.cs b/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/DataContainer.cs index 70f360b..1ff9ff9 100644 --- a/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/DataContainer.cs +++ b/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/DataContainer.cs @@ -48,13 +48,10 @@ namespace LightReflectiveMirror.LoadBalancing public string serverName; public string serverData; public bool isPublic; - public int currentPlayers { get => clients.Count + 1; } public int maxPlayers; - [JsonIgnore] - public List clients; - public RelayAddress relayInfo; + public int currentPlayers; } public enum LRMRegions { Any, NorthAmerica, SouthAmerica, Europe, Asia, Africa, Oceania } diff --git a/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Endpoint/Endpoint.cs b/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Endpoint/Endpoint.cs index 61a3cce..dfa8797 100644 --- a/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Endpoint/Endpoint.cs +++ b/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Endpoint/Endpoint.cs @@ -90,6 +90,7 @@ namespace LightReflectiveMirror.LoadBalancing Logger.ForceLogMessage("Conflicting Rooms! (That's ok)", ConsoleColor.Yellow); } + Logger.WriteLogMessage($"Try Calling CacheAllServers", ConsoleColor.Cyan); CacheAllServers(); await context.Response.SendResponseAsync(HttpStatusCode.Ok); } @@ -168,12 +169,18 @@ namespace LightReflectiveMirror.LoadBalancing { string region = context.Request.Headers["x-Region"]; - if (int.TryParse(region, out int regionID)) + + if (int.TryParse("Info:" + region, out int regionID)) { + Logger.WriteLogMessage("Send Servers, " + _regionRooms[(LRMRegions)regionID].Count, ConsoleColor.Cyan); + Logger.WriteLogMessage("Send Servers(Cached), " + _cachedRegionRooms[(LRMRegions)regionID], ConsoleColor.Cyan); await context.Response.SendResponseAsync(_cachedRegionRooms[(LRMRegions)regionID]); return; } + Logger.WriteLogMessage("Send Servers, "+_regionRooms[LRMRegions.Any].Count,ConsoleColor.Cyan); + Logger.WriteLogMessage("Send Servers(Cached), " + _cachedRegionRooms[LRMRegions.Any], ConsoleColor.Cyan); + // They didnt submit a region header, just give them all servers as they probably are viewing in browser. await context.Response.SendResponseAsync(_cachedRegionRooms[LRMRegions.Any]); } diff --git a/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Endpoint/EndpointExtra.cs b/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Endpoint/EndpointExtra.cs index 7cce8aa..b035ef7 100644 --- a/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Endpoint/EndpointExtra.cs +++ b/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Endpoint/EndpointExtra.cs @@ -1,4 +1,6 @@ -using Newtonsoft.Json; +using LightReflectiveMirror.Debug; +using Newtonsoft.Json; +using System; using System.Collections.Generic; using System.Net; using System.Net.Sockets; @@ -9,8 +11,16 @@ namespace LightReflectiveMirror.LoadBalancing { static void CacheAllServers() { + Logger.WriteLogMessage($"CacheAllServers[{_regionRooms.Count}]", ConsoleColor.Cyan); + foreach (var region in _regionRooms) - _cachedRegionRooms[region.Key] = JsonConvert.SerializeObject(region.Value); + { + Logger.WriteLogMessage($"CacheAllServers[{region.Key}][{region.Value.Count}]", ConsoleColor.Cyan); + + _cachedRegionRooms[region.Key] = JsonConvert.SerializeObject(region.Value,Formatting.Indented); + + Logger.WriteLogMessage($"CacheAllServers[{region.Key}][{region.Value.Count}] {_cachedRegionRooms[region.Key]}", ConsoleColor.Cyan); + } } static void ClearAllServersLists() diff --git a/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Program/Program.cs b/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Program/Program.cs index 910f428..74523f7 100644 --- a/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Program/Program.cs +++ b/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Program/Program.cs @@ -159,6 +159,7 @@ namespace LightReflectiveMirror.LoadBalancing /// public async Task> RequestServerListFromNode(string serverIP, ushort port) { + Logger.ForceLogMessage($"Request Server List from Node: {serverIP}:{port}", ConsoleColor.Yellow); using (WebClient wc = new WebClient()) { try diff --git a/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/RelayHandler/RelayHandlerRoomMethods.cs b/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/RelayHandler/RelayHandlerRoomMethods.cs index 6d28c0d..536e1c8 100644 --- a/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/RelayHandler/RelayHandlerRoomMethods.cs +++ b/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/RelayHandler/RelayHandlerRoomMethods.cs @@ -38,7 +38,7 @@ namespace LightReflectiveMirror supportsDirectConnect = hostIP != null && useDirectConnect, port = port, useNATPunch = useNatPunch, - relayInfo = new RelayAddress { address = Program.publicIP, port = Program.conf.TransportPort, endpointPort = Program.conf.EndpointPort } + relayInfo = new RelayAddress { address = Program.publicIP, port = Program.conf.TransportPort, endpointPort = Program.conf.EndpointPort, serverRegion = Program.conf.LoadBalancerRegion } }; rooms.Add(room); diff --git a/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/Room.cs b/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/Room.cs index 6d85aba..1a9717b 100644 --- a/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/Room.cs +++ b/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/Room.cs @@ -39,5 +39,6 @@ namespace LightReflectiveMirror public ushort port; public ushort endpointPort; public string address; + public LRMRegions serverRegion; } }