sgcWebSockets 2026.4

· 版本发布

Rad Studio

[+] : 新增对 Rad Studio 13.1 的支持:支持新平台 WinARM64EC。
[+] : 新增 TsgcWSFirewall 组件:适用于 WebSocket 服务器的全功能防火墙,具备 IP 黑名单/白名单(支持 CIDR)、带自动封禁的暴力破解防护、SQL 注入检测、XSS 检测、速率限制和洪水防护。
[+] : 新增服务器防火墙演示:展示新防火墙的主要功能,位于文件夹 "Demos\04.WebSocket_Other_Samples\13.Firewall"。
[+] : 新增 HTTP/2 大文件传输演示:用于测试通过 HTTP/2 下载 1GB 以上文件的服务器和客户端演示,位于 "Demos\20.HTTP_Protocol\13.HTTP2_LargeFile_Transfer"。
[+] : 新增 HTTP/2 调试日志:当在 sgcVer.inc 中启用 {$DEFINE SGC_DEBUG} 时,帧发送/接收、WINDOW_UPDATE 增量和流式分块读取通过 LoggerPro 记录。
[+] : 改进 MQTT 客户端:新增属性 RcvMsg 以访问从服务器接收到的最新 MQTT 消息。
[+] : 新增 TsgcTCPClient 组件:基于 WebSocket 客户端基础设施的全功能 TCP 客户端,支持 TLS/SSL、代理、看门狗和协议集成。协议(MQTT、AMQP、STOMP、WAMP 等)现在可以通过其 Client 属性使用 TsgcTCPClient 或 TsgcWebSocketClient。
[+] : 新增 OAuth2 客户端令牌吊销支持(RFC 7009):Revoke() 方法,包含 OnBeforeRevokeToken、OnAfterRevokeToken 和 OnRevokeTokenError 事件。
[+] : 新增 OAuth2 客户端令牌自省支持(RFC 7662):Introspect() 方法,包含 OnBeforeIntrospectToken、OnAfterIntrospectToken 和 OnIntrospectTokenError 事件。
[+] : 新增 OAuth2 客户端设备授权授予支持(RFC 8628):auth2DeviceCode 授权类型,带自动轮询、OnDeviceCode 和 OnDeviceCodeExpired 事件。
[+] : 新增 OAuth2 服务器令牌吊销端点(RFC 7009):/sgc/oauth2/revoke,包含 OnOAuth2AfterRevokeToken 事件。
[+] : 新增 OAuth2 服务器令牌自省端点(RFC 7662):/sgc/oauth2/introspect,包含 OnOAuth2AfterIntrospectToken 事件。
[+] : 新增 OAuth2 服务器设备授权端点(RFC 8628):/sgc/oauth2/device 和 /sgc/oauth2/device/verify,包含 OnOAuth2DeviceAuthorization 和 OnOAuth2DeviceCodeVerification 事件。
[+] : 新增 OAuth2 服务器资源所有者密码凭证授权处理(password grant_type)。
[+] : 新增 OAuth2 服务器设备代码令牌交换(urn:ietf:params:oauth:grant-type:device_code grant_type)。
[+] : 新增 OAuth2 客户端 DPoP 支持(RFC 9449):通过 DPoPOptions 实现发送方约束令牌,支持 ES256/RS256 签名、自动 DPoP 证明 JWT 生成、JWK 指纹计算(RFC 7638)和 DPoP-Nonce 重试处理。
[+] : 新增 OAuth2 客户端 DPoP 方法:GetDPoPProof() 用于资源请求,GetDPoPJWKThumbprint() 用于令牌绑定验证。
[+] : 新增 OAuth2 服务器 DPoP 支持(RFC 9449):DPoP 证明验证、JWK 指纹令牌绑定、token_type DPoP 颁发以及 OnOAuth2ValidateDPoP 事件。
[+] : 改进 Deflate 扩展:速度已提升,特别是对于小消息。(感谢 Michael 的修复。)
[+] : 新增 TsgcWebView2 组件:Microsoft Edge WebView2 的可视化 VCL 包装器,支持导航、JavaScript(异步/同步/初始化脚本)、Cookie 管理、下载控制、配置文件管理、打印、音频/静音、证书处理、上下文菜单、收藏夹图标、虚拟主机映射、截图捕获以及 20 多个事件。支持 Delphi 7 至 Delphi 13。
[+] : 新增 WebView2 浏览器演示:展示导航、JavaScript 执行、Cookies、打印、静音、清除数据、虚拟主机映射和事件日志记录,位于 "Demos\50.Other\WebView2_Browser"。
[+] : 新增 Gemini API:Google Gemini 集成,支持内容生成(含流式传输)、Vision、结构化 JSON 输出、Tool Use(函数调用)、Token 计数、Embeddings 和模型列表。
[+] : 新增 DeepSeek API:DeepSeek 集成,支持 Chat Completions(含流式传输)、Vision、Tool Use(函数调用)和模型列表。
[+] : 新增 Ollama API:Ollama 本地 LLM 集成,支持 Chat Completions(含流式传输)、模型管理(显示、拉取、删除、列出标签)和 Embeddings。
[+] : 新增 Grok API:xAI Grok 集成,支持 Chat Completions(含流式传输)、Vision、Tool Use(函数调用)和模型列表。
[+] : 新增 Mistral API:Mistral AI 集成,支持 Chat Completions(含流式传输)、Vision、结构化 JSON 输出、Tool Use(函数调用)、Embeddings 和模型列表。

[*] : 修复 HTTP/2 服务器端大响应流式传输:消除处理大文件时的内存溢出崩溃并降低服务器峰值内存。
[*] : 修复 HTTP/2 客户端接收大响应时的内存重新分配:有效负载缓冲区现在使用具有平台特定上限的容量增长策略(Win32 为 128 MB,Win64 为 1 GB),而不是在每个 DATA 帧上重新分配。
[*] : 修复 HTTP/2 大文件传输中的 SSL 写入死锁:WINDOW_UPDATE 现在在读取迭代之间排队并刷新,而不是在帧处理期间内联写入,防止客户端和服务器同时在 SSL_write 上阻塞。
[*] : 修复 HTTP/2 大于 2 GB 文件的整数溢出:将 FrameLength、Offset、WindowSize、PayLoadCapacity、ReadWindowSize 和流量控制累加器从 Integer 更改为 Int64。
[*] : 修复 HTTP/2 流状态:在空闲流上接收到的 RST_STREAM 帧(流清理后)现在优雅地转换为关闭状态,而不是引发 PROTOCOL_ERROR。
[*] : 修复 HPACK 编码器:GetBestMatchingIndex 现在正确返回静态表名称仅匹配项,防止 HTTP/2 连接上的压缩错误。
[*] : 修复 HPACK 编码器:Huffman 位掩码使用正确的左移操作。
[*] : 修复 HPACK 解码器:字节计数和可用字节计算现在正确考虑缓冲区偏移量。
[*] : 修复 SetBytesFromInteger:中间字节提取现在用 $FF 掩码,以防止 WINDOW_UPDATE 增量等值出现范围检查错误。
[*] : 修复启用 "Typed @ operator" 选项编译时的类型指针不兼容问题。
[*] : 修复 JWT RSA 签名:DoSignRSA 中的 vLength 参数被声明为 Integer 而非 TIdNativeUInt,在 64 位平台上可能导致栈损坏的问题。(感谢 Gabriel 的修复。)
[*] : 修复 sgcHTTP_API_OpenAI 中的 Win64 指针截断:mciSendCommand 调用对指针使用了 Cardinal() 强制转换,已替换为 NativeUInt()。
[*] : 修复 OAuth2 服务器:SetOAuth2Options 内存泄漏已修复。
[*] : 修复 AWS Signature V4:修复规范请求中查询字符串参数的排序问题。
[*] : 修复从通道取消订阅时 Bitfinex 访问冲突的问题。
[*] : 修复 Indy 服务器中因线程不安全的 FSpecifications 和 FConnections 字段延迟初始化导致的内存泄漏。并发 Indy 工作线程可能在创建时发生竞争,导致实例孤立。

[/] : OnMQTTPublishEx 事件已更改签名,新增了类型为 TsgcWSMQTTMessage 的参数 aMessage。 

.NET

[+] : 新增 TsgcWSFirewall 组件:适用于 WebSocket 服务器的全功能防火墙,具备 IP 黑名单/白名单(支持 CIDR)、带自动封禁的暴力破解防护、SQL 注入检测、XSS 检测、速率限制和洪水防护。
[+] : 新增服务器防火墙演示:展示新防火墙的主要功能,位于文件夹 "Demos\04.WebSocket_Other_Samples\13.Firewall"。
[+] : 新增 HTTP/2 大文件传输演示:用于测试通过 HTTP/2 下载 1GB 以上文件的服务器和客户端演示,位于 "Demos\20.HTTP_Protocol\13.HTTP2_LargeFile_Transfer"。
[+] : 新增 OAuth2 客户端令牌吊销支持(RFC 7009):Revoke() 方法,包含 OnBeforeRevokeToken、OnAfterRevokeToken 和 OnRevokeTokenError 事件。
[+] : 新增 OAuth2 客户端令牌自省支持(RFC 7662):Introspect() 方法,包含 OnBeforeIntrospectToken、OnAfterIntrospectToken 和 OnIntrospectTokenError 事件。
[+] : 新增 OAuth2 客户端设备授权授予支持(RFC 8628):auth2DeviceCode 授权类型,带自动轮询、OnDeviceCode 和 OnDeviceCodeExpired 事件。
[+] : 新增 OAuth2 服务器令牌吊销端点(RFC 7009):/sgc/oauth2/revoke,包含 OnOAuth2AfterRevokeToken 事件。
[+] : 新增 OAuth2 服务器令牌自省端点(RFC 7662):/sgc/oauth2/introspect,包含 OnOAuth2AfterIntrospectToken 事件。
[+] : 新增 OAuth2 服务器设备授权端点(RFC 8628):/sgc/oauth2/device 和 /sgc/oauth2/device/verify,包含 OnOAuth2DeviceAuthorization 和 OnOAuth2DeviceCodeVerification 事件。
[+] : 新增 OAuth2 服务器资源所有者密码凭证授权处理(password grant_type)。
[+] : 新增 OAuth2 服务器设备代码令牌交换(urn:ietf:params:oauth:grant-type:device_code grant_type)。
[+] : 新增 OAuth2 客户端 DPoP 支持(RFC 9449):通过 DPoPOptions 实现发送方约束令牌,支持 ES256/RS256 签名、自动 DPoP 证明 JWT 生成、JWK 指纹计算(RFC 7638)和 DPoP-Nonce 重试处理。
[+] : 新增 OAuth2 客户端 DPoP 方法:GetDPoPProof() 用于资源请求,GetDPoPJWKThumbprint() 用于令牌绑定验证。
[+] : 新增 OAuth2 服务器 DPoP 支持(RFC 9449):DPoP 证明验证、JWK 指纹令牌绑定、token_type DPoP 颁发以及 OnOAuth2ValidateDPoP 事件。
[+] : 改进 Deflate 扩展:速度已提升,特别是对于小消息。(感谢 Michael 的修复。)
[+] : 新增 Gemini API:Google Gemini 集成,支持内容生成(含流式传输)、Vision、结构化 JSON 输出、Tool Use(函数调用)、Token 计数、Embeddings 和模型列表。
[+] : 新增 DeepSeek API:DeepSeek 集成,支持 Chat Completions(含流式传输)、Vision、Tool Use(函数调用)和模型列表。
[+] : 新增 Ollama API:Ollama 本地 LLM 集成,支持 Chat Completions(含流式传输)、模型管理(显示、拉取、删除、列出标签)和 Embeddings。
[+] : 新增 Grok API:xAI Grok 集成,支持 Chat Completions(含流式传输)、Vision、Tool Use(函数调用)和模型列表。
[+] : 新增 Mistral API:Mistral AI 集成,支持 Chat Completions(含流式传输)、Vision、结构化 JSON 输出、Tool Use(函数调用)、Embeddings 和模型列表。

[*] : 修复 HTTP/2 服务器端大响应流式传输:消除处理大文件时的内存溢出崩溃并降低服务器峰值内存。
[*] : 修复 HTTP/2 客户端接收大响应时的内存重新分配:有效负载缓冲区现在使用具有平台特定上限的容量增长策略(Win32 为 128 MB,Win64 为 1 GB),而不是在每个 DATA 帧上重新分配。
[*] : 修复 HTTP/2 大文件传输中的 SSL 写入死锁:WINDOW_UPDATE 现在在读取迭代之间排队并刷新,而不是在帧处理期间内联写入,防止客户端和服务器同时在 SSL_write 上阻塞。
[*] : 修复 HTTP/2 大于 2 GB 文件的整数溢出:将 FrameLength、Offset、WindowSize、PayLoadCapacity、ReadWindowSize 和流量控制累加器从 Integer 更改为 Int64。
[*] : 修复 HTTP/2 流状态:在空闲流上接收到的 RST_STREAM 帧(流清理后)现在优雅地转换为关闭状态,而不是引发 PROTOCOL_ERROR。
[*] : 修复 HPACK 编码器:GetBestMatchingIndex 现在正确返回静态表名称仅匹配项,防止 HTTP/2 连接上的压缩错误。
[*] : 修复 HPACK 编码器:Huffman 位掩码使用正确的左移操作。
[*] : 修复 HPACK 解码器:字节计数和可用字节计算现在正确考虑缓冲区偏移量。
[*] : 修复 SetBytesFromInteger:中间字节提取现在用 $FF 掩码,以防止 WINDOW_UPDATE 增量等值出现范围检查错误。
[*] : 修复启用 "Typed @ operator" 选项编译时的类型指针不兼容问题。
[*] : 修复 JWT RSA 签名:DoSignRSA 中的 vLength 参数被声明为 Integer 而非 TIdNativeUInt,在 64 位平台上可能导致栈损坏的问题。(感谢 Gabriel 的修复。)
[*] : 修复 sgcHTTP_API_OpenAI 中的 Win64 指针截断:mciSendCommand 调用对指针使用了 Cardinal() 强制转换,已替换为 NativeUInt()。
[*] : 修复 OAuth2 服务器:SetOAuth2Options 内存泄漏已修复。
[*] : 修复从通道取消订阅时 Bitfinex 访问冲突的问题。

[*] : 修复 Indy 服务器中因线程不安全的 FSpecifications 和 FConnections 字段延迟初始化导致的内存泄漏。并发 Indy 工作线程可能在创建时发生竞争,导致实例孤立。