Skip to content

Commit 8581501

Browse files
committed
feat(网络): 添加TCP服务开关配置
在AppSetting和LauncherOptions中添加IsEnableTcp配置项,用于控制是否启用TCP服务 修改AppStartUpByServer中的服务器启动逻辑,根据配置决定是否启动TCP服务
1 parent 2657c88 commit 8581501

File tree

3 files changed

+50
-29
lines changed

3 files changed

+50
-29
lines changed

GameFrameX.StartUp/AppStartUpByServer.cs

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -205,43 +205,50 @@ async void InvokeAction()
205205
private async Task StartServer(List<BaseHttpHandler> baseHandler, Func<string, BaseHttpHandler> httpFactory, List<IHttpAopHandler> aopHandlerTypes = null, LogLevel minimumLevelLogLevel = LogLevel.Debug)
206206
{
207207
var multipleServerHostBuilder = MultipleServerHostBuilder.Create();
208-
// 检查TCP端口是否可用
209-
if (Setting.InnerPort > 0 && NetHelper.PortIsAvailable(Setting.InnerPort))
208+
if (Setting.IsEnableTcp)
210209
{
211-
LogHelper.InfoConsole($"start tcp server type: {ServerType}, address: {Setting.InnerHost}, port: {Setting.InnerPort}");
212-
multipleServerHostBuilder.AddServer<IMessage, MessageObjectPipelineFilter>(builder =>
210+
// 检查TCP端口是否可用
211+
if (Setting.InnerPort > 0 && NetHelper.PortIsAvailable(Setting.InnerPort))
213212
{
214-
builder
215-
.UseClearIdleSession()
216-
.UseSessionHandler(OnConnected, OnDisconnected)
217-
.UsePackageHandler(PackageHandler, PackageErrorHandler)
218-
.UseInProcSessionContainer()
219-
.ConfigureServices((context, serviceCollection) =>
220-
{
221-
serviceCollection.Configure<ServerOptions>(options =>
213+
LogHelper.InfoConsole($"start tcp server type: {ServerType}, address: {Setting.InnerHost}, port: {Setting.InnerPort}");
214+
multipleServerHostBuilder.AddServer<IMessage, MessageObjectPipelineFilter>(builder =>
215+
{
216+
builder
217+
.UseClearIdleSession()
218+
.UseSessionHandler(OnConnected, OnDisconnected)
219+
.UsePackageHandler(PackageHandler, PackageErrorHandler)
220+
.UseInProcSessionContainer()
221+
.ConfigureServices((context, serviceCollection) =>
222222
{
223-
var listenOptions = new ListenOptions()
223+
serviceCollection.Configure<ServerOptions>(options =>
224224
{
225-
Ip = "Any",
226-
Port = Setting.InnerPort,
227-
};
228-
options.AddListener(listenOptions);
225+
var listenOptions = new ListenOptions()
226+
{
227+
Ip = "Any",
228+
Port = Setting.InnerPort,
229+
};
230+
options.AddListener(listenOptions);
231+
});
232+
// foreach (var serviceDescriptor in serviceCollection)
233+
// {
234+
// if (serviceDescriptor.ServiceType == typeof(IPackageDecoder<IMessage>))
235+
// {
236+
// serviceDescriptor.ImplementationInstance ;
237+
// LogHelper.Console("XX");
238+
// }
239+
// }
229240
});
230-
// foreach (var serviceDescriptor in serviceCollection)
231-
// {
232-
// if (serviceDescriptor.ServiceType == typeof(IPackageDecoder<IMessage>))
233-
// {
234-
// serviceDescriptor.ImplementationInstance ;
235-
// LogHelper.Console("XX");
236-
// }
237-
// }
238-
});
239-
});
240-
LogHelper.InfoConsole($"start tcp server startup complete type: {ServerType}, address: {Setting.InnerHost}, port: {Setting.InnerPort}");
241+
});
242+
LogHelper.InfoConsole($"start tcp server startup complete type: {ServerType}, address: {Setting.InnerHost}, port: {Setting.InnerPort}");
243+
}
244+
else
245+
{
246+
LogHelper.WarningConsole($"start tcp server start failed type: {ServerType}, address: {Setting.InnerHost}, port: {Setting.InnerPort}, cause: the port is invalid or occupied");
247+
}
241248
}
242249
else
243250
{
244-
LogHelper.WarningConsole($"start tcp server start failed type: {ServerType}, address: {Setting.InnerHost}, port: {Setting.InnerPort}, cause: the port is invalid or occupied");
251+
LogHelper.InfoConsole($"start tcp server type: {ServerType}, address: {Setting.InnerHost}, port: {Setting.InnerPort}, cause: the tcp server is disabled");
245252
}
246253

247254
// 检查WebSocket端口是否可用

GameFrameX.StartUp/Options/LauncherOptions.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,15 @@ public sealed class LauncherOptions
229229
[Option(nameof(ActorRecycleTime), DefaultValue = 15, Description = "Actor 空闲多久回收,单位分钟,默认值为15分钟,最小值为1分钟,小于1则强制设置为5分钟")]
230230
public int ActorRecycleTime { get; set; } = 15;
231231

232+
233+
/// <summary>
234+
/// 是否启用 TCP 服务,默认值为 true
235+
/// <para>开启后服务器将监听 TCP 端口,允许客户端通过 TCP 协议进行连接</para>
236+
/// <para>默认值为 true,即启用,因为健康检查需要通过 TCP 端口进行访问</para>
237+
/// </summary>
238+
[Option(nameof(IsEnableTcp), DefaultValue = true, Description = "是否启用 TCP 服务,默认值为 true")]
239+
public bool IsEnableTcp { get; set; } = true;
240+
232241
/// <summary>
233242
/// 内部主机地址
234243
/// </summary>

GameFrameX.Utility/Setting/AppSetting.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,11 @@ public string ToFormatString()
264264
/// </summary>
265265
public int ActorQueueTimeOut { get; set; } = 30_000;
266266

267+
/// <summary>
268+
/// 是否启用TCP
269+
/// </summary>
270+
public bool IsEnableTcp { get; set; }
271+
267272
/// <summary>
268273
/// 内部主机地址
269274
/// </summary>

0 commit comments

Comments
 (0)