Skip to content

Commit e3979d4

Browse files
committed
[修改]1. 修改网络消息解码编码的实现方式
1 parent 20ade4e commit e3979d4

File tree

1 file changed

+17
-41
lines changed

1 file changed

+17
-41
lines changed

GameFrameX.StartUp/AppStartUpByServer.cs

Lines changed: 17 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,6 @@ namespace GameFrameX.StartUp;
4242
/// </summary>
4343
public 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

Comments
 (0)