Skip to content

Commit 1d4cb9a

Browse files
committed
Added better Transport config to allow for multiple hosts
1 parent 3d06ad1 commit 1d4cb9a

File tree

4 files changed

+44
-20
lines changed

4 files changed

+44
-20
lines changed

MLAPI/Data/NetworkConfig.cs

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,18 @@ public class NetworkConfig
2121
/// </summary>
2222
public ushort ProtocolVersion = 0;
2323
/// <summary>
24+
/// The transport hosts the sever uses
25+
/// </summary>
26+
public List<TransportHost> ServerTransports = new List<TransportHost>()
27+
{
28+
new TransportHost()
29+
{
30+
Name = "UDP Socket",
31+
Port = 7777,
32+
Websockets = false
33+
}
34+
};
35+
/// <summary>
2436
/// Channels used by the NetworkedTransport
2537
/// </summary>
2638
public List<Channel> Channels = new List<Channel>();
@@ -75,13 +87,13 @@ public class NetworkConfig
7587
/// </summary>
7688
public int MaxConnections = 100;
7789
/// <summary>
78-
/// The port for the NetworkTransport to use
90+
/// The port for the NetworkTransport to use when connecting
7991
/// </summary>
80-
public int Port = 7777;
92+
public int ConnectPort = 7777;
8193
/// <summary>
8294
/// The address to connect to
8395
/// </summary>
84-
public string Address = "127.0.0.1";
96+
public string ConnectAddress = "127.0.0.1";
8597
/// <summary>
8698
/// The amount of seconds to wait for handshake to complete before timing out a client
8799
/// </summary>
@@ -128,14 +140,6 @@ public class NetworkConfig
128140
/// Wheter or not to enable scene switching
129141
/// </summary>
130142
public bool EnableSceneSwitching = false;
131-
/// <summary>
132-
/// Wheter or not we should have an additional host that listens for WebSocket requests
133-
/// </summary>
134-
public bool UseWebsockets = false;
135-
/// <summary>
136-
/// The port the websocket host listens on
137-
/// </summary>
138-
public int WebsocketsPort = 7778;
139143

140144
private byte[] ConfigHash = null;
141145
/// <summary>

MLAPI/Data/TransportHost.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using System;
2+
3+
namespace MLAPI.Data
4+
{
5+
[Serializable]
6+
public class TransportHost
7+
{
8+
public string Name = Guid.NewGuid().ToString().Replace("-", "");
9+
public int Port = 7777;
10+
public bool Websockets = false;
11+
}
12+
}

MLAPI/MLAPI.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
<Compile Include="Data\NetworkConfig.cs" />
7474
<Compile Include="Data\NetworkPool.cs" />
7575
<Compile Include="Data\TrackedPointData.cs" />
76+
<Compile Include="Data\TransportHost.cs" />
7677
<Compile Include="GlobalSuppressions.cs" />
7778
<Compile Include="MonoBehaviours\Prototyping\NetworkedAnimator.cs" />
7879
<Compile Include="MonoBehaviours\Prototyping\NetworkedNavMeshAgent.cs" />

MLAPI/MonoBehaviours/Core/NetworkingManager.cs

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -387,10 +387,13 @@ public void StartServer()
387387
}
388388
}
389389
HostTopology hostTopology = new HostTopology(cConfig, NetworkConfig.MaxConnections);
390-
NetworkTransport.AddHost(hostTopology, NetworkConfig.Port);
391-
392-
if(NetworkConfig.UseWebsockets)
393-
NetworkTransport.AddWebsocketHost(hostTopology, NetworkConfig.WebsocketsPort);
390+
for (int i = 0; i < NetworkConfig.ServerTransports.Count; i++)
391+
{
392+
if (NetworkConfig.ServerTransports[i].Websockets)
393+
NetworkTransport.AddWebsocketHost(hostTopology, NetworkConfig.ServerTransports[i].Port);
394+
else
395+
NetworkTransport.AddHost(hostTopology, NetworkConfig.ServerTransports[i].Port);
396+
}
394397

395398
_isServer = true;
396399
_isClient = false;
@@ -420,7 +423,7 @@ public void StartClient()
420423
_isClient = true;
421424
isListening = true;
422425
byte error;
423-
serverConnectionId = NetworkTransport.Connect(serverHostId, NetworkConfig.Address, NetworkConfig.Port, 0, out error);
426+
serverConnectionId = NetworkTransport.Connect(serverHostId, NetworkConfig.ConnectAddress, NetworkConfig.ConnectPort, 0, out error);
424427
Debug.LogWarning("MLAPI: Connection failed: " + ((NetworkError)error).ToString());
425428
}
426429

@@ -444,7 +447,7 @@ public void StartClientWebsocket()
444447
_isClient = true;
445448
isListening = true;
446449
byte error;
447-
serverConnectionId = NetworkTransport.Connect(serverHostId, NetworkConfig.Address, NetworkConfig.WebsocketsPort, 0, out error);
450+
serverConnectionId = NetworkTransport.Connect(serverHostId, NetworkConfig.ConnectAddress, NetworkConfig.ConnectPort, 0, out error);
448451
Debug.LogWarning("MLAPI: Connection failed: " + ((NetworkError)error).ToString());
449452
}
450453

@@ -527,9 +530,13 @@ public void StartHost()
527530
}
528531
}
529532
HostTopology hostTopology = new HostTopology(cConfig, NetworkConfig.MaxConnections);
530-
NetworkTransport.AddHost(hostTopology, NetworkConfig.Port, null);
531-
if (NetworkConfig.UseWebsockets)
532-
NetworkTransport.AddWebsocketHost(hostTopology, NetworkConfig.WebsocketsPort);
533+
for (int i = 0; i < NetworkConfig.ServerTransports.Count; i++)
534+
{
535+
if (NetworkConfig.ServerTransports[i].Websockets)
536+
NetworkTransport.AddWebsocketHost(hostTopology, NetworkConfig.ServerTransports[i].Port);
537+
else
538+
NetworkTransport.AddHost(hostTopology, NetworkConfig.ServerTransports[i].Port);
539+
}
533540

534541
_isServer = true;
535542
_isClient = true;

0 commit comments

Comments
 (0)