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 @@ - + diff --git a/src/BootstrapBlazor.Server/Components/Samples/Sockets/Adapters.razor b/src/BootstrapBlazor.Server/Components/Samples/Sockets/Adapters.razor index 77df9c61d3f..7e980048213 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Sockets/Adapters.razor +++ b/src/BootstrapBlazor.Server/Components/Samples/Sockets/Adapters.razor @@ -44,16 +44,17 @@
  • 不使用 数据适配器 要分两次接收才能接收完整
  • 使用 数据适配器 一次即可接收完整数据包
  • -
    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());