refactoring: removed external dependencies from server, removed webhooks from server

This commit is contained in:
2024-05-19 08:54:49 +03:00
parent b84538b238
commit e9dc45265a
53 changed files with 642 additions and 1049 deletions
+5
View File
@@ -28,4 +28,9 @@
<ProjectReference Include="..\Ragon.Server\Ragon.Server.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="NLog" Version="5.3.2" />
</ItemGroup>
</Project>
+40
View File
@@ -0,0 +1,40 @@
using System;
using NLog;
using Ragon.Server.Logging;
namespace Ragon.Relay;
public class RelayLogger: IRagonLogger
{
private Logger _nlogger;
public RelayLogger(string tag)
{
_nlogger = LogManager.GetLogger(tag);
}
public void Warning(string message)
{
_nlogger.Warn(message);
}
public void Info(string message)
{
_nlogger.Info(message);
}
public void Error(string message)
{
_nlogger.Error(message);
}
public void Error(Exception ex)
{
_nlogger.Error(ex);
}
public void Trace(string message)
{
_nlogger.Trace(message);
}
}
@@ -0,0 +1,11 @@
using Ragon.Server.Logging;
namespace Ragon.Relay;
public class RelayLoggerFactory: IRagonLoggerFactory
{
public IRagonLogger GetLogger(string tag)
{
return new RelayLogger(tag);
}
}
@@ -0,0 +1,37 @@
using System;
using Ragon.Server;
using Ragon.Server.Entity;
using Ragon.Server.Plugin;
using Ragon.Server.Room;
namespace Ragon.Relay;
public class RelayRoomPlugin: BaseRoomPlugin
{
public void Tick(float dt)
{
}
public void OnAttached()
{
Console.WriteLine("Room attached");
}
public void OnDetached()
{
Console.WriteLine("Room detached");
}
public bool OnEntityCreate(RagonRoomPlayer creator, RagonEntity entity)
{
Console.WriteLine($"Entity created: {entity.Id}");
return true;
}
public bool OnEntityRemove(RagonRoomPlayer destroyer, RagonEntity entity)
{
Console.WriteLine($"Entity destroyed: {entity.Id}");
return true;
}
}
+50 -25
View File
@@ -14,39 +14,64 @@
* limitations under the License.
*/
using NLog;
using System;
using System.IO;
using System.Threading;
using Newtonsoft.Json;
using Ragon.Server;
using Ragon.Server.ENetServer;
using Ragon.Server.WebSocketServer;
using Ragon.Server.IO;
using Ragon.Server.Logging;
using Ragon.Server.Plugin;
using Ragon.Server.WebSocketServer;
namespace Ragon.Relay;
public class Relay
namespace Ragon.Relay
{
public void Start()
public class Relay
{
var logger = LogManager.GetLogger("Ragon.Relay");
logger.Info("Relay Application");
var configuration = RagonServerConfiguration.Load("relay.config.json");
var serverType = RagonServerConfiguration.GetServerType(configuration.ServerType);
INetworkServer networkServer = new ENetServer();
IServerPlugin plugin = new RelayServerPlugin();
switch (serverType)
public void Start()
{
case ServerType.ENET:
networkServer = new ENetServer();
break;
case ServerType.WEBSOCKET:
networkServer = new WebSocketServer();
break;
}
LoggerManager.SetLoggerFactory(new RelayLoggerFactory());
var relay = new RagonServer(networkServer, plugin, configuration);
logger.Info("Started");
relay.Start();
var logger = LoggerManager.GetLogger("Relay");
logger.Info("Relay Application");
var data = File.ReadAllText("relay.config.json");
var configuration = JsonConvert.DeserializeObject<RelayConfiguration>(data);
var serverType = RagonServerConfiguration.GetServerType(configuration.ServerType);
INetworkServer networkServer = new ENetServer();
IServerPlugin plugin = new RelayServerPlugin();
switch (serverType)
{
case ServerType.ENET:
networkServer = new ENetServer();
break;
case ServerType.WEBSOCKET:
networkServer = new WebSocketServer();
break;
}
var serverConfiguration = new RagonServerConfiguration()
{
LimitConnections = configuration.LimitConnections,
LimitRooms = configuration.LimitConnections,
LimitBufferedEvents = configuration.LimitConnections,
LimitPlayersPerRoom = configuration.LimitConnections,
Port = configuration.Port,
Protocol = configuration.Protocol,
ServerKey = configuration.ServerKey,
ServerTickRate = configuration.ServerTickRate,
};
var relay = new RagonServer(networkServer, plugin, serverConfiguration);
relay.Start();
while (relay.IsRunning)
{
relay.Tick();
Thread.Sleep(1);
}
relay.Dispose();
}
}
}
+20
View File
@@ -0,0 +1,20 @@
using System;
namespace Ragon.Relay
{
[Serializable]
public struct RelayConfiguration
{
public string ServerKey;
public string ServerType;
public ushort ServerTickRate;
public string Protocol;
public ushort Port;
public int LimitConnections;
public int LimitPlayersPerRoom;
public int LimitRooms;
public int LimitBufferedEvents;
public int LimitUserData;
}
}
-39
View File
@@ -1,39 +0,0 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using NLog;
using Ragon.Server.Entity;
using Ragon.Server.IO;
using Ragon.Server.Plugin;
using Ragon.Server.Room;
namespace Ragon.Relay;
public class RelayRoomPlugin : BaseRoomPlugin
{
private Logger _logger = LogManager.GetCurrentClassLogger();
public override bool OnPlayerJoined(RagonRoomPlayer player)
{
// _logger.Trace($"Player {player.Name}|{player.Connection.Id} joined");
return false;
}
public override bool OnPlayerLeaved(RagonRoomPlayer player)
{
// _logger.Trace($"Player {player.Name}|{player.Connection.Id} leaved");
return false;
}
public override bool OnData(RagonRoomPlayer player, byte[] data)
{
// _logger.Trace($"Data received from {player.Name}|{player.Connection.Id}");
// All Players
// Room.ReplicateData(new Byte[] { 30, 40, 50 }, NetworkChannel.RELIABLE);
// Selected Player
// Room.ReplicateData(new byte[] { 10, 30, 40 }, new List<RagonRoomPlayer> { player }, NetworkChannel.RELIABLE);
return true;
}
}
+2 -11
View File
@@ -2,20 +2,11 @@
"serverKey": "defaultkey",
"serverType": "enet",
"serverTickRate": 30,
"gameProtocol": "1.0.0",
"protocol": "1.0.0",
"port": 5000,
"httpPort": 5001,
"httpKey": "defaultkey",
"limitConnections": 4095,
"limitPlayersPerRoom": 20,
"limitRooms": 200,
"limitBufferedEvents": 50,
"limitUserData": 1024,
"webHooks":
{
"room-created": "http://127.0.0.1:3000/service/create-room",
"room-removed": "http://127.0.0.1:3000/service/remove-room",
"room-joined": "http://127.0.0.1:3000/service/join-room",
"room-leaved": "http://127.0.0.1:3000/service/leave-room"
}
"limitUserData": 1024
}