MessagePack for C#的文档指出,使用 LZ4 压缩可以实现有效负载的紧凑二进制大小。在文档中您可以使用:
var lz4Options = MessagePackSerializerOptions.Standard.WithCompression(MessagePackCompression.Lz4BlockArray);
MessagePackSerializer.Serialize(obj, lz4Options);
Run Code Online (Sandbox Code Playgroud)
所以它基本上说,在调用每个Serialize()和Deserialize()方法时,您应该专门指定压缩选项。
但是,在使用.NET Signalr时,您不会直接调用这些方法。Nuget 包 Microsoft.AspNetCore.SignalR.Protocols会为您完成此操作。您只需在ConfigureServices()方法中告诉应用程序serviceCollection 执行此操作:
public void ConfigureServices(IServiceCollection services)
{
services.AddSignalR().AddMessagePackProtocol();
}
Run Code Online (Sandbox Code Playgroud)
所以我很好奇如何为信号器指定MessagePackSerializationOptions以使用 LZ4 压缩。我已经尝试更改应用程序主要方法中的默认选项配置:
MessagePackSerializer.DefaultOptions = MessagePackSerializerOptions.Standard.WithCompression(MessagePackCompression.Lz4BlockArray);
Run Code Online (Sandbox Code Playgroud)
但首先不推荐,其次它似乎不起作用:D