From 964bbcb51df20d2952dd6f99372ff9068e2954a1 Mon Sep 17 00:00:00 2001 From: Cxx0822 <1556464090@qq.com> Date: Mon, 20 Apr 2026 20:01:00 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0NLog=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SocketHub/NLog.config | 32 ++++++++++++++++++++ SocketHub/Program.cs | 60 +++++++++++++++++++++++++++++++------- SocketHub/SocketHub.csproj | 11 +++++++ 3 files changed, 93 insertions(+), 10 deletions(-) create mode 100644 SocketHub/NLog.config diff --git a/SocketHub/NLog.config b/SocketHub/NLog.config new file mode 100644 index 0000000..1067898 --- /dev/null +++ b/SocketHub/NLog.config @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SocketHub/Program.cs b/SocketHub/Program.cs index 148bea5..2f10ae0 100644 --- a/SocketHub/Program.cs +++ b/SocketHub/Program.cs @@ -1,26 +1,27 @@ -using System.Buffers; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; +using NLog.Extensions.Hosting; using SuperSocket.ProtoBase; using SuperSocket.Server; using SuperSocket.Server.Abstractions; +using SuperSocket.Server.Abstractions.Session; using SuperSocket.Server.Host; +using SuperSocket.WebSocket; using SuperSocket.WebSocket.Server; +using System.Buffers; var host = Host.CreateDefaultBuilder(args) .ConfigureServices((context, services) => { - + services.AddSingleton, TcpPackageHandler>(); + services.AddSingleton(); }) .AsMultipleServerHostBuilder() .AddServer(builder => { builder - .UsePackageHandler(async (session, package) => - { - Console.WriteLine($"Magic={package.Magic:X4}, Type={package.Type}, Len={package.Length}"); - await session.SendAsync(package.Payload); - }) .ConfigureServerOptions((ctx, config) => { return config.GetSection("TcpServer"); @@ -31,14 +32,21 @@ var host = Host.CreateDefaultBuilder(args) builder .UseWebSocketMessageHandler(async (session, package) => { - Console.WriteLine($"[WebSocket] ${package.Message}"); - await session.SendAsync("ok"); + using var scope = session.Server.ServiceProvider.CreateScope(); + var handler = scope.ServiceProvider.GetRequiredService(); + + await handler.HandleAsync(session, package); }) .ConfigureServerOptions((ctx, config) => { return config.GetSection("WebSocketServer"); }); }) + .ConfigureLogging(logging => + { + logging.ClearProviders(); + }) + .UseNLog() .Build(); await host.RunAsync(); @@ -52,8 +60,40 @@ public class TcpService : SuperSocketService } } +public class TcpPackageHandler : IPackageHandler +{ + private readonly ILogger _logger; + + public TcpPackageHandler(ILogger logger) + { + _logger = logger; + } + + public async ValueTask Handle(IAppSession session, ProtocolFrame package, CancellationToken cancellationToken) + { + _logger.LogInformation($"Magic={package.Magic:X4}, Type={package.Type}, Len={package.Length}"); + await session.SendAsync(package.Payload, cancellationToken); + } +} + +public class WebSocketMessageHandler +{ + private readonly ILogger _logger; + + public WebSocketMessageHandler(ILogger logger) + { + _logger = logger; + } + + public async ValueTask HandleAsync(WebSocketSession session, WebSocketPackage package) + { + _logger.LogInformation($"[WebSocket] {package.Message}"); + await session.SendAsync("ok"); + } +} + /// -/// 协议数据结构 +/// 协议数据结构 示例:65 6D 00 05 00 01 68 65 6C 6C 6F /// /// 帧头标识 /// 数据长度 diff --git a/SocketHub/SocketHub.csproj b/SocketHub/SocketHub.csproj index 459a0df..1cff380 100644 --- a/SocketHub/SocketHub.csproj +++ b/SocketHub/SocketHub.csproj @@ -8,15 +8,26 @@ + + + + + Always + + + Always + + Always +