diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorDiscovery.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorDiscovery.cs index 5345a90..b1c498f 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorDiscovery.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorDiscovery.cs @@ -11,9 +11,11 @@ public class LiteNetLib4MirrorDiscovery : MonoBehaviour public UnityEventIpEndpointString onDiscoveryResponse; public ushort[] ports = {7777}; private static readonly NetDataWriter DataWriter = new NetDataWriter(); + public static string DiscoveryKey { get; protected set; } public static LiteNetLib4MirrorDiscovery Singleton { get; protected set; } private static string _lastDiscoveryMessage; + #region Overridable methods protected virtual void Awake() { if (Singleton == null) @@ -21,6 +23,8 @@ protected virtual void Awake() GetComponent().InitializeTransport(); Singleton = this; } + + SetDiscoveryKey(); } /// @@ -31,6 +35,15 @@ protected virtual bool ProcessDiscoveryRequest(IPEndPoint ipEndPoint, string tex response = "LiteNetLib4Mirror Discovery accepted"; return true; } + + /// + /// Override this in your code to set the key used for discovery requests. + /// + protected virtual void SetDiscoveryKey() + { + DiscoveryKey = LiteNetLib4MirrorUtils.ApplicationName; + } + #endregion public static void InitializeFinder() { @@ -73,7 +86,7 @@ public static void StopDiscovery() private static void OnDiscoveryResponse(IPEndPoint remoteendpoint, NetPacketReader reader, UnconnectedMessageType messagetype) { - if (messagetype == UnconnectedMessageType.BasicMessage && reader.TryGetString(out string application) && application == Application.productName) + if (messagetype == UnconnectedMessageType.BasicMessage && reader.TryGetString(out string key) && key == DiscoveryKey) { Singleton.onDiscoveryResponse.Invoke(remoteendpoint, LiteNetLib4MirrorUtils.FromBase64(reader.GetString())); } @@ -82,7 +95,7 @@ private static void OnDiscoveryResponse(IPEndPoint remoteendpoint, NetPacketRead internal static void OnDiscoveryRequest(IPEndPoint remoteendpoint, NetPacketReader reader, UnconnectedMessageType messagetype) { - if (messagetype == UnconnectedMessageType.Broadcast && reader.TryGetString(out string application) && application == Application.productName && Singleton.ProcessDiscoveryRequest(remoteendpoint, LiteNetLib4MirrorUtils.FromBase64(reader.GetString()), out string response)) + if (messagetype == UnconnectedMessageType.Broadcast && reader.TryGetString(out string key) && key == DiscoveryKey && Singleton.ProcessDiscoveryRequest(remoteendpoint, LiteNetLib4MirrorUtils.FromBase64(reader.GetString()), out string response)) { LiteNetLib4MirrorCore.Host.SendUnconnectedMessage(LiteNetLib4MirrorUtils.ReusePutDiscovery(DataWriter, response, ref _lastDiscoveryMessage), remoteendpoint); } diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorTransport.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorTransport.cs index 393b131..c67eb3e 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorTransport.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorTransport.cs @@ -114,12 +114,14 @@ public class LiteNetLib4MirrorTransport : Transport, ISegmentTransport public UnityEventError onClientSocketError; public UnityEventIntError onServerSocketError; + protected internal static string ConnectKey { get; set; } + internal static bool Polling; private static readonly NetDataWriter ConnectWriter = new NetDataWriter(); #region Overridable methods protected internal virtual void GetConnectData(NetDataWriter writer) { - writer.Put(GetConnectKey()); + writer.Put(ConnectKey); } protected internal virtual void ProcessConnectionRequest(ConnectionRequest request) @@ -134,6 +136,14 @@ protected internal virtual void ProcessConnectionRequest(ConnectionRequest reque } } + /// + /// Override this in your code to set the key used for connection requests. + /// + protected internal virtual void SetConnectKey() + { + ConnectKey = LiteNetLib4MirrorUtils.ToBase64(Application.productName + Application.companyName + Application.unityVersion + LiteNetLib4MirrorCore.TransportVersion + Singleton.authCode); + } + protected internal virtual void OnConncetionRefused(DisconnectInfo disconnectinfo) { @@ -147,11 +157,8 @@ internal void InitializeTransport() Singleton = this; LiteNetLib4MirrorCore.State = LiteNetLib4MirrorCore.States.Idle; } - } - private static string GetConnectKey() - { - return LiteNetLib4MirrorUtils.ToBase64(Application.productName + Application.companyName + Application.unityVersion + LiteNetLib4MirrorCore.TransportVersion + Singleton.authCode); + SetConnectKey(); } #region Unity Functions @@ -219,7 +226,7 @@ public override bool ServerActive() public override void ServerStart() { - LiteNetLib4MirrorServer.StartServer(GetConnectKey()); + LiteNetLib4MirrorServer.StartServer(ConnectKey); } public override bool ServerSend(List connectionIds, int channelId, ArraySegment data) diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorUtils.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorUtils.cs index a1587ce..e6b791d 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorUtils.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorUtils.cs @@ -52,11 +52,11 @@ public static NetDataWriter ReusePut(NetDataWriter writer, string text, ref stri public static NetDataWriter ReusePutDiscovery(NetDataWriter writer, string text, ref string lastText) { - if (ApplicationName + text != lastText) + if (LiteNetLib4MirrorDiscovery.DiscoveryKey + text != lastText) { - lastText = ApplicationName + text; + lastText = LiteNetLib4MirrorDiscovery.DiscoveryKey + text; writer.Reset(); - writer.Put(ApplicationName); + writer.Put(LiteNetLib4MirrorDiscovery.DiscoveryKey); writer.Put(ToBase64(text)); }