Skip to content

Commit 9496db5

Browse files
committed
feat(网络): 添加UDP支持配置及实现
在AppSetting和LauncherOptions中添加IsEnableUdp配置项,默认禁用 在AppStartUpByServer中实现UDP服务启动逻辑,当配置启用时创建UDP监听
1 parent 8581501 commit 9496db5

File tree

3 files changed

+45
-24
lines changed

3 files changed

+45
-24
lines changed

GameFrameX.StartUp/AppStartUpByServer.cs

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
using GameFrameX.SuperSocket.Server.Abstractions;
4545
using GameFrameX.SuperSocket.Server.Abstractions.Session;
4646
using GameFrameX.SuperSocket.Server.Host;
47+
using GameFrameX.SuperSocket.Udp;
4748
using GameFrameX.SuperSocket.WebSocket;
4849
using GameFrameX.SuperSocket.WebSocket.Server;
4950
using GameFrameX.Utility;
@@ -213,31 +214,38 @@ private async Task StartServer(List<BaseHttpHandler> baseHandler, Func<string, B
213214
LogHelper.InfoConsole($"start tcp server type: {ServerType}, address: {Setting.InnerHost}, port: {Setting.InnerPort}");
214215
multipleServerHostBuilder.AddServer<IMessage, MessageObjectPipelineFilter>(builder =>
215216
{
216-
builder
217-
.UseClearIdleSession()
218-
.UseSessionHandler(OnConnected, OnDisconnected)
219-
.UsePackageHandler(PackageHandler, PackageErrorHandler)
220-
.UseInProcSessionContainer()
221-
.ConfigureServices((context, serviceCollection) =>
217+
var serverBuilder = builder
218+
.UseClearIdleSession()
219+
.UseSessionHandler(OnConnected, OnDisconnected)
220+
.UsePackageHandler(PackageHandler, PackageErrorHandler)
221+
.UseInProcSessionContainer();
222+
223+
// 启用UDP 检查是否可用
224+
if (Setting.IsEnableUdp)
225+
{
226+
serverBuilder.UseUdp();
227+
}
228+
229+
serverBuilder.ConfigureServices((context, serviceCollection) =>
230+
{
231+
serviceCollection.Configure<ServerOptions>(options =>
222232
{
223-
serviceCollection.Configure<ServerOptions>(options =>
233+
var listenOptions = new ListenOptions()
224234
{
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-
// }
235+
Ip = "Any",
236+
Port = Setting.InnerPort,
237+
};
238+
options.AddListener(listenOptions);
240239
});
240+
// foreach (var serviceDescriptor in serviceCollection)
241+
// {
242+
// if (serviceDescriptor.ServiceType == typeof(IPackageDecoder<IMessage>))
243+
// {
244+
// serviceDescriptor.ImplementationInstance ;
245+
// LogHelper.Console("XX");
246+
// }
247+
// }
248+
});
241249
});
242250
LogHelper.InfoConsole($"start tcp server startup complete type: {ServerType}, address: {Setting.InnerHost}, port: {Setting.InnerPort}");
243251
}

GameFrameX.StartUp/Options/LauncherOptions.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,15 +229,23 @@ 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-
232+
233233
/// <summary>
234234
/// 是否启用 TCP 服务,默认值为 true
235235
/// <para>开启后服务器将监听 TCP 端口,允许客户端通过 TCP 协议进行连接</para>
236236
/// <para>默认值为 true,即启用,因为健康检查需要通过 TCP 端口进行访问</para>
237237
/// </summary>
238238
[Option(nameof(IsEnableTcp), DefaultValue = true, Description = "是否启用 TCP 服务,默认值为 true")]
239239
public bool IsEnableTcp { get; set; } = true;
240-
240+
241+
/// <summary>
242+
/// 是否启用 UDP 服务,默认值为 false
243+
/// <para>开启后服务器将监听 UDP 端口,允许客户端通过 UDP 协议进行连接</para>
244+
/// <para>默认值为 false,即不启用,因为 UDP 协议是无连接的,不保证数据传输的可靠性</para>
245+
/// </summary>
246+
[Option(nameof(IsEnableUdp), DefaultValue = false, Description = "是否启用 UDP 服务,默认值为 false")]
247+
public bool IsEnableUdp { get; set; } = false;
248+
241249
/// <summary>
242250
/// 内部主机地址
243251
/// </summary>

GameFrameX.Utility/Setting/AppSetting.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,11 @@ public string ToFormatString()
269269
/// </summary>
270270
public bool IsEnableTcp { get; set; }
271271

272+
/// <summary>
273+
/// 是否启用UDP
274+
/// </summary>
275+
public bool IsEnableUdp { get; set; } = false;
276+
272277
/// <summary>
273278
/// 内部主机地址
274279
/// </summary>

0 commit comments

Comments
 (0)