diff --git a/src/BootstrapBlazor.Server/BootstrapBlazor.Server.csproj b/src/BootstrapBlazor.Server/BootstrapBlazor.Server.csproj
index 5d4ca951ed0..ef49367be52 100644
--- a/src/BootstrapBlazor.Server/BootstrapBlazor.Server.csproj
+++ b/src/BootstrapBlazor.Server/BootstrapBlazor.Server.csproj
@@ -74,7 +74,7 @@
private readonly DataPackageAdapter _dataAdapter = new()
-{
- // 数据适配器内部使用固定长度数据处理器
- DataPackageHandler = new FixLengthDataPackageHandler(12)
-};
+ // 数据适配器内部使用固定长度数据处理器
+private readonly DataPackageAdapter _dataAdapter = new(new FixLengthDataPackageHandler(12));
-_dataAdapter.ReceivedCallBack += async Data =>
+_dataAdapter.ReceivedCallBack = async Data =>
{
// 此处接收到的数据 Data 为完整响应数据
};
+// 实战中可以使用 ITcpSocketClient 扩展方法 SetDataPackageAdapter 简化代码
+_client.SetDataPackageAdapter(_dataAdapter, UpdateReceiveLog);
+
+ 本例中使用的模拟服务端代码如下:
diff --git a/src/BootstrapBlazor.Server/Components/Samples/Sockets/Adapters.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Sockets/Adapters.razor.cs
index b8871f39141..d7e60e20a07 100644
--- a/src/BootstrapBlazor.Server/Components/Samples/Sockets/Adapters.razor.cs
+++ b/src/BootstrapBlazor.Server/Components/Samples/Sockets/Adapters.razor.cs
@@ -25,10 +25,7 @@ public partial class Adapters : IDisposable
private readonly CancellationTokenSource _connectTokenSource = new();
private readonly CancellationTokenSource _sendTokenSource = new();
private readonly CancellationTokenSource _receiveTokenSource = new();
- private readonly DataPackageAdapter _dataAdapter = new()
- {
- DataPackageHandler = new FixLengthDataPackageHandler(12)
- };
+ private readonly DataPackageAdapter _dataAdapter = new(new FixLengthDataPackageHandler(12));
private bool _useDataAdapter = true;
///
@@ -46,13 +43,14 @@ protected override void OnInitialized()
// 设置本地使用的 IP地址与端口
options.LocalEndPoint = new IPEndPoint(IPAddress.Loopback, 0);
});
+
+ // 此处代码分开写是为了判断 _useDataAdapter 参数
_client.ReceivedCallBack += OnReceivedAsync;
+ _dataAdapter.ReceivedCallBack = UpdateReceiveLog;
+
+ // 实战中可以通过下面一句话设置数据适配器与回调方法
+ // _client.SetDataPackageAdapter(_dataAdapter, UpdateReceiveLog);
- _dataAdapter.ReceivedCallBack += async data =>
- {
- // 直接处理接收的数据
- await UpdateReceiveLog(data);
- };
}
private async Task OnConnectAsync()
@@ -102,7 +100,7 @@ private async ValueTask OnReceivedAsync(ReadOnlyMemory data)
}
}
- private async Task UpdateReceiveLog(ReadOnlyMemory data)
+ private async ValueTask UpdateReceiveLog(ReadOnlyMemory data)
{
var payload = Encoding.UTF8.GetString(data.Span);
var body = BitConverter.ToString(data.ToArray());