Ver código fonte

调整了AService接口,Create方法参数IPEndPoint改成string,Session的RemoteAddress也改成string,主要是为了兼容Websocket

tanghai 2 anos atrás
pai
commit
a7e1b2038f

BIN
Config/Excel/cs/StartConfig/RouterTest/StartSceneConfigCategory.bytes


BIN
Config/Excel/s/StartConfig/RouterTest/StartSceneConfigCategory.bytes


+ 0 - 1
Config/Json/cs/StartConfig/RouterTest/StartSceneConfig.txt

@@ -5,7 +5,6 @@
 [4, {"_t":"StartSceneConfig","_id":4,"Process":1,"Zone":1,"SceneType":"Location","Name":"Location","Port":0}],
 [5, {"_t":"StartSceneConfig","_id":5,"Process":1,"Zone":1,"SceneType":"Map","Name":"Map1","Port":0}],
 [6, {"_t":"StartSceneConfig","_id":6,"Process":1,"Zone":1,"SceneType":"Map","Name":"Map2","Port":0}],
-[200, {"_t":"StartSceneConfig","_id":200,"Process":2,"Zone":2,"SceneType":"Robot","Name":"Robot01","Port":0}],
 [400, {"_t":"StartSceneConfig","_id":400,"Process":3,"Zone":3,"SceneType":"RouterManager","Name":"RouterManager","Port":30300}],
 [401, {"_t":"StartSceneConfig","_id":401,"Process":4,"Zone":3,"SceneType":"Router","Name":"Router01","Port":30301}],
 [402, {"_t":"StartSceneConfig","_id":402,"Process":5,"Zone":3,"SceneType":"Router","Name":"Router02","Port":30302}],

+ 0 - 1
Config/Json/s/StartConfig/RouterTest/StartSceneConfig.txt

@@ -5,7 +5,6 @@
 [4, {"_t":"StartSceneConfig","_id":4,"Process":1,"Zone":1,"SceneType":"Location","Name":"Location","Port":0}],
 [5, {"_t":"StartSceneConfig","_id":5,"Process":1,"Zone":1,"SceneType":"Map","Name":"Map1","Port":0}],
 [6, {"_t":"StartSceneConfig","_id":6,"Process":1,"Zone":1,"SceneType":"Map","Name":"Map2","Port":0}],
-[200, {"_t":"StartSceneConfig","_id":200,"Process":2,"Zone":2,"SceneType":"Robot","Name":"Robot01","Port":0}],
 [400, {"_t":"StartSceneConfig","_id":400,"Process":3,"Zone":3,"SceneType":"RouterManager","Name":"RouterManager","Port":30300}],
 [401, {"_t":"StartSceneConfig","_id":401,"Process":4,"Zone":3,"SceneType":"Router","Name":"Router01","Port":30301}],
 [402, {"_t":"StartSceneConfig","_id":402,"Process":5,"Zone":3,"SceneType":"Router","Name":"Router02","Port":30302}],

BIN
Unity/Assets/Config/Excel/StartConfig/RouterTest/StartSceneConfig@s.xlsx


+ 1 - 1
Unity/Assets/Resources/GlobalConfig.asset

@@ -12,6 +12,6 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 36527db572638af47b03c805671cba75, type: 3}
   m_Name: GlobalConfig
   m_EditorClassIdentifier: 
-  CodeMode: 3
+  CodeMode: 1
   BuildType: 1
   AppType: 7

+ 1 - 1
Unity/Assets/Scripts/Core/Network/AService.cs

@@ -74,7 +74,7 @@ namespace ET
         
         public abstract bool IsDisposed();
 
-        public abstract void Create(long id, IPEndPoint address);
+        public abstract void Create(long id, string address);
 
         public abstract void Send(long channelId, ActorId actorId, MessageObject message);
 

+ 3 - 2
Unity/Assets/Scripts/Core/Network/KService.cs

@@ -398,7 +398,7 @@ namespace ET
             return channel;
         }
 
-        public override void Create(long id, IPEndPoint address)
+        public override void Create(long id, string address)
         {
             if (this.localConnChannels.TryGetValue(id, out KChannel kChannel))
             {
@@ -409,7 +409,8 @@ namespace ET
             {
                 // 低32bit是localConn
                 uint localConn = (uint)id;
-                kChannel = new KChannel(localConn, address, this);
+                IPEndPoint endPoint = NetworkHelper.ToIPEndPoint(address);
+                kChannel = new KChannel(localConn, endPoint, this);
                 this.localConnChannels.Add(kChannel.LocalConn, kChannel);
             }
             catch (Exception e)

+ 5 - 9
Unity/Assets/Scripts/Core/Network/TService.cs

@@ -112,20 +112,16 @@ namespace ET
 			OnAcceptComplete(this.innArgs.SocketError, this.innArgs.AcceptSocket);
 		}
 
-		private TChannel Create(IPEndPoint ipEndPoint, long id)
-		{
-			TChannel channel = new TChannel(id, ipEndPoint, this);
-			this.idChannels.Add(channel.Id, channel);
-			return channel;
-		}
-
-		public override void Create(long id, IPEndPoint address)
+		public override void Create(long id, string address)
 		{
 			if (this.idChannels.TryGetValue(id, out TChannel _))
 			{
 				return;
 			}
-			this.Create(address, id);
+
+			IPEndPoint endPoint = NetworkHelper.ToIPEndPoint(address);
+			TChannel channel = new(id, endPoint, this);
+			this.idChannels.Add(channel.Id, channel);
 		}
 		
 		private TChannel Get(long id)

+ 1 - 1
Unity/Assets/Scripts/Core/Network/WChannel.cs

@@ -76,7 +76,7 @@ namespace ET
             this.webSocket.Dispose();
         }
 
-        public async ETTask ConnectAsync(string url)
+        private async ETTask ConnectAsync(string url)
         {
             try
             {

+ 4 - 10
Unity/Assets/Scripts/Core/Network/WService.cs

@@ -38,12 +38,11 @@ namespace ET
             }
         }
         
-        public WChannel Create(string address, long id)
+        public override void Create(long id, string address)
         {
-			ClientWebSocket webSocket = new ClientWebSocket();
-            WChannel channel = new WChannel(id, webSocket, address, this);
+			ClientWebSocket webSocket = new();
+            WChannel channel = new(id, webSocket, address, this);
             this.channels[channel.Id] = channel;
-            return channel;
         }
 
         public override void Remove(long id, int error = 0)
@@ -69,7 +68,7 @@ namespace ET
         {
             if (!this.channels.TryGetValue(id, out _))
             {
-                this.Create(address, id);
+                this.Create(id, address);
             }
         }
 
@@ -127,11 +126,6 @@ namespace ET
                 Log.Error(e);
             }
         }
-        
-        public override void Create(long id, IPEndPoint address)
-        {
-            throw new NotImplementedException();
-        }
 
         public override void Send(long channelId, ActorId actorId, MessageObject message)
         {

+ 6 - 1
Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router/RouterCheckComponentSystem.cs

@@ -18,6 +18,8 @@ namespace ET.Client
             long instanceId = self.InstanceId;
             Fiber fiber = self.Fiber();
             Scene root = fiber.Root;
+            
+            IPEndPoint realAddress = NetworkHelper.ToIPEndPoint(self.GetParent<Session>().RemoteAddress);
             while (true)
             {
                 if (self.InstanceId != instanceId)
@@ -45,7 +47,7 @@ namespace ET.Client
 
                     (uint localConn, uint remoteConn) = session.AService.GetChannelConn(sessionId);
                     
-                    IPEndPoint realAddress = self.GetParent<Session>().RemoteAddress;
+                    
                     fiber.Info($"get recvLocalConn start: {root.Id} {realAddress} {localConn} {remoteConn}");
 
                     (uint recvLocalConn, IPEndPoint routerAddress) = await RouterHelper.GetRouterAddress(root, realAddress, localConn, remoteConn);
@@ -56,6 +58,9 @@ namespace ET.Client
                     }
                     
                     fiber.Info($"get recvLocalConn ok: {root.Id} {routerAddress} {realAddress} {recvLocalConn} {localConn} {remoteConn}");
+
+                    realAddress = routerAddress;
+                    session.RemoteAddress = realAddress.ToString();
                     
                     session.LastRecvTime = TimeInfo.Instance.ClientNow();
                     

+ 3 - 3
Unity/Assets/Scripts/Hotfix/Server/Module/Message/ProcessOuterSenderSystem.cs

@@ -102,15 +102,15 @@ namespace ET.Server
         private static void OnAccept(this ProcessOuterSender self, long channelId, IPEndPoint ipEndPoint)
         {
             Session session = self.AddChildWithId<Session, AService>(channelId, self.AService);
-            session.RemoteAddress = ipEndPoint;
+            session.RemoteAddress = ipEndPoint.ToString();
             //session.AddComponent<SessionIdleCheckerComponent, int, int, int>(NetThreadComponent.checkInteral, NetThreadComponent.recvMaxIdleTime, NetThreadComponent.sendMaxIdleTime);
         }
 
         private static Session CreateInner(this ProcessOuterSender self, long channelId, IPEndPoint ipEndPoint)
         {
             Session session = self.AddChildWithId<Session, AService>(channelId, self.AService);
-            session.RemoteAddress = ipEndPoint;
-            self.AService.Create(channelId, ipEndPoint);
+            session.RemoteAddress = ipEndPoint.ToString();
+            self.AService.Create(channelId, session.RemoteAddress);
 
             //session.AddComponent<InnerPingComponent>();
             //session.AddComponent<SessionIdleCheckerComponent, int, int, int>(NetThreadComponent.checkInteral, NetThreadComponent.recvMaxIdleTime, NetThreadComponent.sendMaxIdleTime);

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Server/Module/Router/FiberInit_Router.cs

@@ -12,7 +12,7 @@ namespace ET.Server
             
             // 开发期间使用OuterIPPort,云服务器因为本机没有OuterIP,所以要改成InnerIPPort,然后在云防火墙中端口映射到InnerIPPort
             root.AddComponent<RouterComponent, IPEndPoint, string>(startSceneConfig.OuterIPPort, startSceneConfig.StartProcessConfig.InnerIP);
-
+            root.Fiber.Console($"Router create: {root.Fiber.Id}");
             await ETTask.CompletedTask;
         }
     }

+ 6 - 5
Unity/Assets/Scripts/Hotfix/Share/Module/Message/NetComponentSystem.cs

@@ -52,7 +52,7 @@ namespace ET
         private static void OnAccept(this NetComponent self, long channelId, IPEndPoint ipEndPoint)
         {
             Session session = self.AddChildWithId<Session, AService>(channelId, self.AService);
-            session.RemoteAddress = ipEndPoint;
+            session.RemoteAddress = ipEndPoint.ToString();
 
             if (self.IScene.SceneType != SceneType.BenchmarkServer)
             {
@@ -81,12 +81,13 @@ namespace ET
         {
             long channelId = NetServices.Instance.CreateConnectChannelId();
             Session session = self.AddChildWithId<Session, AService>(channelId, self.AService);
-            session.RemoteAddress = realIPEndPoint;
+            session.RemoteAddress = realIPEndPoint.ToString();
             if (self.IScene.SceneType != SceneType.BenchmarkClient)
             {
                 session.AddComponent<SessionIdleCheckerComponent>();
             }
-            self.AService.Create(session.Id, realIPEndPoint);
+            
+            self.AService.Create(session.Id, session.RemoteAddress);
 
             return session;
         }
@@ -95,12 +96,12 @@ namespace ET
         {
             long channelId = localConn;
             Session session = self.AddChildWithId<Session, AService>(channelId, self.AService);
-            session.RemoteAddress = realIPEndPoint;
+            session.RemoteAddress = realIPEndPoint.ToString();
             if (self.IScene.SceneType != SceneType.BenchmarkClient)
             {
                 session.AddComponent<SessionIdleCheckerComponent>();
             }
-            self.AService.Create(session.Id, routerIPEndPoint);
+            self.AService.Create(session.Id, routerIPEndPoint.ToString());
             return session;
         }
     }

+ 1 - 1
Unity/Assets/Scripts/Model/Share/Module/Message/Session.cs

@@ -170,7 +170,7 @@ namespace ET
             set;
         }
 
-        public IPEndPoint RemoteAddress
+        public string RemoteAddress
         {
             get;
             set;