From 1d4cb9a347a9adc9fb39600aebe259dc30cd82dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albin=20Cor=C3=A9n?= <2108U9@gmail.com> Date: Tue, 3 Apr 2018 18:43:01 +0200 Subject: [PATCH] Added better Transport config to allow for multiple hosts --- MLAPI/Data/NetworkConfig.cs | 26 +++++++++++-------- MLAPI/Data/TransportHost.cs | 12 +++++++++ MLAPI/MLAPI.csproj | 1 + .../MonoBehaviours/Core/NetworkingManager.cs | 25 +++++++++++------- 4 files changed, 44 insertions(+), 20 deletions(-) create mode 100644 MLAPI/Data/TransportHost.cs diff --git a/MLAPI/Data/NetworkConfig.cs b/MLAPI/Data/NetworkConfig.cs index b493fd5..27c93b9 100644 --- a/MLAPI/Data/NetworkConfig.cs +++ b/MLAPI/Data/NetworkConfig.cs @@ -21,6 +21,18 @@ namespace MLAPI.Data /// public ushort ProtocolVersion = 0; /// + /// The transport hosts the sever uses + /// + public List ServerTransports = new List() + { + new TransportHost() + { + Name = "UDP Socket", + Port = 7777, + Websockets = false + } + }; + /// /// Channels used by the NetworkedTransport /// public List Channels = new List(); @@ -75,13 +87,13 @@ namespace MLAPI.Data /// public int MaxConnections = 100; /// - /// The port for the NetworkTransport to use + /// The port for the NetworkTransport to use when connecting /// - public int Port = 7777; + public int ConnectPort = 7777; /// /// The address to connect to /// - public string Address = "127.0.0.1"; + public string ConnectAddress = "127.0.0.1"; /// /// The amount of seconds to wait for handshake to complete before timing out a client /// @@ -128,14 +140,6 @@ namespace MLAPI.Data /// Wheter or not to enable scene switching /// public bool EnableSceneSwitching = false; - /// - /// Wheter or not we should have an additional host that listens for WebSocket requests - /// - public bool UseWebsockets = false; - /// - /// The port the websocket host listens on - /// - public int WebsocketsPort = 7778; private byte[] ConfigHash = null; /// diff --git a/MLAPI/Data/TransportHost.cs b/MLAPI/Data/TransportHost.cs new file mode 100644 index 0000000..8230919 --- /dev/null +++ b/MLAPI/Data/TransportHost.cs @@ -0,0 +1,12 @@ +using System; + +namespace MLAPI.Data +{ + [Serializable] + public class TransportHost + { + public string Name = Guid.NewGuid().ToString().Replace("-", ""); + public int Port = 7777; + public bool Websockets = false; + } +} diff --git a/MLAPI/MLAPI.csproj b/MLAPI/MLAPI.csproj index d684e2d..0ae7f97 100644 --- a/MLAPI/MLAPI.csproj +++ b/MLAPI/MLAPI.csproj @@ -73,6 +73,7 @@ + diff --git a/MLAPI/MonoBehaviours/Core/NetworkingManager.cs b/MLAPI/MonoBehaviours/Core/NetworkingManager.cs index 3435997..bcd33e2 100644 --- a/MLAPI/MonoBehaviours/Core/NetworkingManager.cs +++ b/MLAPI/MonoBehaviours/Core/NetworkingManager.cs @@ -387,10 +387,13 @@ namespace MLAPI.MonoBehaviours.Core } } HostTopology hostTopology = new HostTopology(cConfig, NetworkConfig.MaxConnections); - NetworkTransport.AddHost(hostTopology, NetworkConfig.Port); - - if(NetworkConfig.UseWebsockets) - NetworkTransport.AddWebsocketHost(hostTopology, NetworkConfig.WebsocketsPort); + for (int i = 0; i < NetworkConfig.ServerTransports.Count; i++) + { + if (NetworkConfig.ServerTransports[i].Websockets) + NetworkTransport.AddWebsocketHost(hostTopology, NetworkConfig.ServerTransports[i].Port); + else + NetworkTransport.AddHost(hostTopology, NetworkConfig.ServerTransports[i].Port); + } _isServer = true; _isClient = false; @@ -420,7 +423,7 @@ namespace MLAPI.MonoBehaviours.Core _isClient = true; isListening = true; byte error; - serverConnectionId = NetworkTransport.Connect(serverHostId, NetworkConfig.Address, NetworkConfig.Port, 0, out error); + serverConnectionId = NetworkTransport.Connect(serverHostId, NetworkConfig.ConnectAddress, NetworkConfig.ConnectPort, 0, out error); Debug.LogWarning("MLAPI: Connection failed: " + ((NetworkError)error).ToString()); } @@ -444,7 +447,7 @@ namespace MLAPI.MonoBehaviours.Core _isClient = true; isListening = true; byte error; - serverConnectionId = NetworkTransport.Connect(serverHostId, NetworkConfig.Address, NetworkConfig.WebsocketsPort, 0, out error); + serverConnectionId = NetworkTransport.Connect(serverHostId, NetworkConfig.ConnectAddress, NetworkConfig.ConnectPort, 0, out error); Debug.LogWarning("MLAPI: Connection failed: " + ((NetworkError)error).ToString()); } @@ -527,9 +530,13 @@ namespace MLAPI.MonoBehaviours.Core } } HostTopology hostTopology = new HostTopology(cConfig, NetworkConfig.MaxConnections); - NetworkTransport.AddHost(hostTopology, NetworkConfig.Port, null); - if (NetworkConfig.UseWebsockets) - NetworkTransport.AddWebsocketHost(hostTopology, NetworkConfig.WebsocketsPort); + for (int i = 0; i < NetworkConfig.ServerTransports.Count; i++) + { + if (NetworkConfig.ServerTransports[i].Websockets) + NetworkTransport.AddWebsocketHost(hostTopology, NetworkConfig.ServerTransports[i].Port); + else + NetworkTransport.AddHost(hostTopology, NetworkConfig.ServerTransports[i].Port); + } _isServer = true; _isClient = true;