@@ -42,16 +42,6 @@ namespace GameFrameX.StartUp;
42
42
/// </summary>
43
43
public abstract partial class AppStartUpBase
44
44
{
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
-
55
45
/// <summary>
56
46
/// 启动服务器 - 同时启动TCP和WebSocket服务
57
47
/// </summary>
@@ -65,35 +55,15 @@ public abstract partial class AppStartUpBase
65
55
/// <param name="minimumLevelLogLevel">日志记录的最小级别,用于控制日志输出</param>
66
56
protected async Task StartServerAsync < TMessageDecoderHandler , TMessageEncoderHandler > (
67
57
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 ( )
71
62
{
63
+ MessageHelper . SetMessageDecoderHandler ( Activator . CreateInstance < TMessageDecoderHandler > ( ) , messageDecompressHandler ) ;
64
+ MessageHelper . SetMessageEncoderHandler ( Activator . CreateInstance < TMessageEncoderHandler > ( ) , messageCompressHandler ) ;
72
65
// 启动服务器
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 ) ;
97
67
// 设置全局启动状态
98
68
GlobalSettings . LaunchTime = DateTime . UtcNow ;
99
69
GlobalSettings . IsAppRunning = true ;
@@ -190,8 +160,7 @@ async void InvokeAction()
190
160
/// <param name="httpFactory">HTTP处理器工厂,根据命令标识符创建对应的处理器实例</param>
191
161
/// <param name="aopHandlerTypes">AOP处理器列表,用于在HTTP请求处理前后执行额外的逻辑</param>
192
162
/// <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 )
195
164
{
196
165
var multipleServerHostBuilder = MultipleServerHostBuilder . Create ( ) ;
197
166
// 检查TCP端口是否可用
@@ -202,7 +171,6 @@ private async Task StartServer<TMessageDecoderHandler>(List<BaseHttpHandler> bas
202
171
{
203
172
builder
204
173
. UseClearIdleSession ( )
205
- . UsePackageDecoder < TMessageDecoderHandler > ( )
206
174
. UseSessionHandler ( OnConnected , OnDisconnected )
207
175
. UsePackageHandler ( PackageHandler , PackageErrorHandler )
208
176
. UseInProcSessionContainer ( )
@@ -217,6 +185,14 @@ private async Task StartServer<TMessageDecoderHandler>(List<BaseHttpHandler> bas
217
185
} ;
218
186
options . AddListener ( listenOptions ) ;
219
187
} ) ;
188
+ // foreach (var serviceDescriptor in serviceCollection)
189
+ // {
190
+ // if (serviceDescriptor.ServiceType == typeof(IPackageDecoder<IMessage>))
191
+ // {
192
+ // serviceDescriptor.ImplementationInstance ;
193
+ // LogHelper.Console("XX");
194
+ // }
195
+ // }
220
196
} ) ;
221
197
} ) ;
222
198
LogHelper . InfoConsole ( $ "启动 [TCP] 服务器启动完成 - 类型: { ServerType } , 地址: { Setting . InnerIp } , 端口: { Setting . InnerPort } ") ;
@@ -364,7 +340,7 @@ private async ValueTask WebSocketMessageHandler(WebSocketSession session, WebSoc
364
340
}
365
341
366
342
var readOnlySequence = messagePackage . Data ;
367
- var message = MessageDecoderHandler . Handler ( ref readOnlySequence ) ;
343
+ var message = MessageHelper . DecoderHandler . Handler ( ref readOnlySequence ) ;
368
344
await PackageHandler ( session , message ) ;
369
345
}
370
346
0 commit comments