@@ -42,16 +42,6 @@ namespace GameFrameX.StartUp;
4242/// </summary>
4343public abstract partial class AppStartUpBase
4444{
45- /// <summary>
46- /// 消息编码处理器 - 用于将消息编码成二进制格式
47- /// </summary>
48- protected IMessageEncoderHandler MessageEncoderHandler { get ; private set ; }
49-
50- /// <summary>
51- /// 消息解码处理器 - 用于将二进制数据解码成消息对象
52- /// </summary>
53- protected IMessageDecoderHandler MessageDecoderHandler { get ; private set ; }
54-
5545 /// <summary>
5646 /// 启动服务器 - 同时启动TCP和WebSocket服务
5747 /// </summary>
@@ -65,35 +55,15 @@ public abstract partial class AppStartUpBase
6555 /// <param name="minimumLevelLogLevel">日志记录的最小级别,用于控制日志输出</param>
6656 protected async Task StartServerAsync < TMessageDecoderHandler , TMessageEncoderHandler > (
6757 IMessageCompressHandler messageCompressHandler ,
68- IMessageDecompressHandler messageDecompressHandler , List < BaseHttpHandler > baseHandler , Func < string , BaseHttpHandler > httpFactory , List < IHttpAopHandler > aopHandlerTypes = null , LogLevel minimumLevelLogLevel = LogLevel . Debug )
69- where TMessageDecoderHandler : class , IMessageDecoderHandler , IPackageDecoder < IMessage > , new ( )
70- where TMessageEncoderHandler : class , IMessageEncoderHandler , IPackageEncoder < IMessage > , new ( )
58+ IMessageDecompressHandler messageDecompressHandler ,
59+ List < BaseHttpHandler > baseHandler , Func < string , BaseHttpHandler > httpFactory , List < IHttpAopHandler > aopHandlerTypes = null , LogLevel minimumLevelLogLevel = LogLevel . Debug )
60+ where TMessageDecoderHandler : class , IMessageDecoderHandler , new ( )
61+ where TMessageEncoderHandler : class , IMessageEncoderHandler , new ( )
7162 {
63+ MessageHelper . SetMessageDecoderHandler ( Activator . CreateInstance < TMessageDecoderHandler > ( ) , messageDecompressHandler ) ;
64+ MessageHelper . SetMessageEncoderHandler ( Activator . CreateInstance < TMessageEncoderHandler > ( ) , messageCompressHandler ) ;
7265 // 启动服务器
73- await StartServer < TMessageDecoderHandler > ( baseHandler , httpFactory , aopHandlerTypes , minimumLevelLogLevel ) ;
74-
75- // 初始化消息处理器
76- if ( MessageDecoderHandler . IsNull ( ) )
77- {
78- MessageDecoderHandler = Activator . CreateInstance < TMessageDecoderHandler > ( ) ;
79- }
80-
81- if ( MessageEncoderHandler . IsNull ( ) )
82- {
83- MessageEncoderHandler = Activator . CreateInstance < TMessageEncoderHandler > ( ) ;
84- }
85-
86- // 设置压缩/解压处理器
87- if ( MessageDecoderHandler . IsNotNull ( ) )
88- {
89- MessageDecoderHandler . SetDecompressionHandler ( messageDecompressHandler ) ;
90- }
91-
92- if ( MessageEncoderHandler . IsNotNull ( ) )
93- {
94- MessageEncoderHandler . SetCompressionHandler ( messageCompressHandler ) ;
95- }
96-
66+ await StartServer ( baseHandler , httpFactory , aopHandlerTypes , minimumLevelLogLevel ) ;
9767 // 设置全局启动状态
9868 GlobalSettings . LaunchTime = DateTime . UtcNow ;
9969 GlobalSettings . IsAppRunning = true ;
@@ -190,8 +160,7 @@ async void InvokeAction()
190160 /// <param name="httpFactory">HTTP处理器工厂,根据命令标识符创建对应的处理器实例</param>
191161 /// <param name="aopHandlerTypes">AOP处理器列表,用于在HTTP请求处理前后执行额外的逻辑</param>
192162 /// <param name="minimumLevelLogLevel">日志记录的最小级别,用于控制日志输出</param>
193- private async Task StartServer < TMessageDecoderHandler > ( List < BaseHttpHandler > baseHandler , Func < string , BaseHttpHandler > httpFactory , List < IHttpAopHandler > aopHandlerTypes = null , LogLevel minimumLevelLogLevel = LogLevel . Debug )
194- where TMessageDecoderHandler : class , IMessageDecoderHandler , IPackageDecoder < IMessage > , new ( )
163+ private async Task StartServer ( List < BaseHttpHandler > baseHandler , Func < string , BaseHttpHandler > httpFactory , List < IHttpAopHandler > aopHandlerTypes = null , LogLevel minimumLevelLogLevel = LogLevel . Debug )
195164 {
196165 var multipleServerHostBuilder = MultipleServerHostBuilder . Create ( ) ;
197166 // 检查TCP端口是否可用
@@ -202,7 +171,6 @@ private async Task StartServer<TMessageDecoderHandler>(List<BaseHttpHandler> bas
202171 {
203172 builder
204173 . UseClearIdleSession ( )
205- . UsePackageDecoder < TMessageDecoderHandler > ( )
206174 . UseSessionHandler ( OnConnected , OnDisconnected )
207175 . UsePackageHandler ( PackageHandler , PackageErrorHandler )
208176 . UseInProcSessionContainer ( )
@@ -217,6 +185,14 @@ private async Task StartServer<TMessageDecoderHandler>(List<BaseHttpHandler> bas
217185 } ;
218186 options . AddListener ( listenOptions ) ;
219187 } ) ;
188+ // foreach (var serviceDescriptor in serviceCollection)
189+ // {
190+ // if (serviceDescriptor.ServiceType == typeof(IPackageDecoder<IMessage>))
191+ // {
192+ // serviceDescriptor.ImplementationInstance ;
193+ // LogHelper.Console("XX");
194+ // }
195+ // }
220196 } ) ;
221197 } ) ;
222198 LogHelper . InfoConsole ( $ "启动 [TCP] 服务器启动完成 - 类型: { ServerType } , 地址: { Setting . InnerIp } , 端口: { Setting . InnerPort } ") ;
@@ -364,7 +340,7 @@ private async ValueTask WebSocketMessageHandler(WebSocketSession session, WebSoc
364340 }
365341
366342 var readOnlySequence = messagePackage . Data ;
367- var message = MessageDecoderHandler . Handler ( ref readOnlySequence ) ;
343+ var message = MessageHelper . DecoderHandler . Handler ( ref readOnlySequence ) ;
368344 await PackageHandler ( session , message ) ;
369345 }
370346
0 commit comments