sgcWebSockets 使用 ZLib 进行 WebSocket 压缩/解压缩。近期 ZLib 发布了新版本,修复了以下问题:
- 修复使用 Z_FIXED 策略时可能导致越界访问的 deflate 错误。
- 修复 deflate_stored() 中窗口满时的 deflate 错误。
- 将 CRC-32 计算速度提升 1.5 至 3 倍。
- 在 ARMv8 处理器上使用硬件 CRC-32 指令。
- 通过 x 的幂次表加速 crc32_combine()。
- 新增 crc32_combine_gen() 和 crc32_combine_op() 用于快速合并运算。
ZLib 静态链接
sgcWebSockets Enterprise Edition 包含一个自定义 Indy 版本,使用 ZLib 静态链接 .obj 文件,这些文件已更新至最新 ZLib 版本,因此您只需下载最新版 sgcWebSockets 即可应用此修复。
这是默认选项,对于 99% 的用户而言,只需更新 sgcWebSockets 版本即可(sgcWebSockets 2022.4+)。
ZLib 动态库
从 sgcWebSockets 2022.4.0 开始,您可以选择动态加载 zlib 库,而不是将 .obj 文件静态链接到您的二进制文件中。
为此,请在您的项目中添加以下条件编译定义:
SGC_DYNAMICLOAD_ZLIB
或者,您也可以编辑 sgcIndy.inc 文件(位于源代码文件夹)并添加以下行:
{$DEFINE SGC_DYNAMICLOAD_ZLIB}
最后,您必须设置 ZLib 库的所在位置,使用以下方法并传入库所在的完整路径(不含库文件名):
sgcIdZLibHeaders.IdZLibSetLibPath('c:\software\zlib');
*此配置仅适用于含源代码的 sgcWebSockets Enterprise Edition。已编译的 ZLib DLL 可从私人账户下载。
