From 43b7b888ae7e33eb937b63912a3d6db6b77032e0 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Mon, 7 Jul 2025 14:23:40 +0800 Subject: [PATCH 1/2] feat(SocketClientOptions): add EnableLog parameter --- .../Services/TcpSocket/SocketClientOptions.cs | 5 +++++ .../Services/TcpSocket/TcpSocketClientBase.cs | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/BootstrapBlazor/Services/TcpSocket/SocketClientOptions.cs b/src/BootstrapBlazor/Services/TcpSocket/SocketClientOptions.cs index 72904adfd72..13eae671abc 100644 --- a/src/BootstrapBlazor/Services/TcpSocket/SocketClientOptions.cs +++ b/src/BootstrapBlazor/Services/TcpSocket/SocketClientOptions.cs @@ -50,4 +50,9 @@ public class SocketClientOptions /// /// This property specifies the local network endpoint that the socket client will bind to when establishing a connection. public IPEndPoint LocalEndPoint { get; set; } = new IPEndPoint(IPAddress.Any, 0); + + /// + /// Gets or sets a value indicating whether logging is enabled. Default value is false. + /// + public bool EnableLog { get; set; } } diff --git a/src/BootstrapBlazor/Services/TcpSocket/TcpSocketClientBase.cs b/src/BootstrapBlazor/Services/TcpSocket/TcpSocketClientBase.cs index 24e563ed1a4..465a366ac80 100644 --- a/src/BootstrapBlazor/Services/TcpSocket/TcpSocketClientBase.cs +++ b/src/BootstrapBlazor/Services/TcpSocket/TcpSocketClientBase.cs @@ -165,6 +165,11 @@ public virtual async ValueTask SendAsync(ReadOnlyMemory data, Cancel { Log(LogLevel.Error, ex, $"TCP Socket send failed from {_localEndPoint} to {_remoteEndPoint}"); } + + if (options.EnableLog) + { + Log(LogLevel.Information, null, $"Sending data from {_localEndPoint} to {_remoteEndPoint}, Data Length: {data.Length} Data Content: {BitConverter.ToString(data.ToArray())} Result: {ret}"); + } return ret; } @@ -258,6 +263,11 @@ private async ValueTask ReceiveCoreAsync(ISocketClientProvider client, Memo { Log(LogLevel.Error, ex, $"TCP Socket receive failed from {_localEndPoint} to {_remoteEndPoint}"); } + + if (options.EnableLog) + { + Log(LogLevel.Information, null, $"Receiving data from {_localEndPoint} to {_remoteEndPoint}, Data Length: {len} Data Content: {BitConverter.ToString(buffer.ToArray())}"); + } return len; } From e4a1be15d63f821088bc50b362630d10de5b8c82 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Mon, 7 Jul 2025 14:23:47 +0800 Subject: [PATCH 2/2] =?UTF-8?q?test:=20=E5=A2=9E=E5=8A=A0=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTest/Services/TcpSocketFactoryTest.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/UnitTest/Services/TcpSocketFactoryTest.cs b/test/UnitTest/Services/TcpSocketFactoryTest.cs index e8f1220f84a..cdafcfb8cb7 100644 --- a/test/UnitTest/Services/TcpSocketFactoryTest.cs +++ b/test/UnitTest/Services/TcpSocketFactoryTest.cs @@ -643,7 +643,11 @@ private static ITcpSocketClient CreateClient(Action? builder var provider = sc.BuildServiceProvider(); var factory = provider.GetRequiredService(); - var client = factory.GetOrCreate("test", op => op.LocalEndPoint = Utility.ConvertToIpEndPoint("localhost", 0)); + var client = factory.GetOrCreate("test", op => + { + op.LocalEndPoint = Utility.ConvertToIpEndPoint("localhost", 0); + op.EnableLog = true; + }); return client; }