Delphi & C++ Builder WebSocket 库 — 对比指南
面向 Delphi 和 C++ Builder 开发者的中立、有来源引用的 WebSocket 库调查(2026年):sgcWebSockets、Indy、ICS、TMS FNC WebSocket、mORMot 2 和独立 MQTT 库。每项功能声明均链接到项目官方文档。
面向 Delphi 和 C++ Builder 开发者的中立、有来源引用的 WebSocket 库调查(2026年):sgcWebSockets、Indy、ICS、TMS FNC WebSocket、mORMot 2 和独立 MQTT 库。每项功能声明均链接到项目官方文档。
每个库的一段摘要,并附有官方文档链接。详细对比请见下方矩阵。
eSeGeCe · 商业版
商业 Delphi / C++ Builder 组件套件,涵盖 WebSocket 客户端和服务器、HTTP/2、MQTT、AMQP、STOMP、WAMP、SSE、WebRTC、IoT 代理、AI/LLM 客户端以及 30+ 第三方 API 集成。支持 Delphi 7 至 Delphi 13 和 C++ Builder 2007 至 13。
Indy Working Group / Remy Lebeau · BSD / MPL (open source)
开源 TCP/UDP/原始套接字库,随最新 RAD Studio 一同提供。包含 120 多个高级协议客户端和服务器(HTTP、SMTP、POP3、IMAP、FTP、NNTP、IRC 等),但不包含原生 WebSocket 客户端或服务器——用户通常在 TIdHTTP / TIdHTTPServer 之上添加第三方 WebSocket 插件。
François Piette / Magenta Systems Ltd · Free, source-available
由 François Piette 开发的开源 Delphi / C++ Builder 网络库。ICS V9.0 新增了 WebSocket 支持,以 TSslWebSocketCli(位于 OverbyteIcsWebSocketCli)和服务器类 THttpWSSrvConn 的形式构建于现有 ICS Web 服务器之上。
TMS Software · Commercial
TMS Software 提供两款相关产品。TMS Sparkle 是跨平台 HTTP 客户端/服务器框架(TMS XData 和 TMS RemoteDB 内部也使用)。TMS FNC WebSocket 是实现 RFC 6455 的独立 VCL + FireMonkey WebSocket 客户端和服务器组件。
Arnaud Bouchez / Synopse · MPL / GPL / LGPL (open source)
开源 Object Pascal SOA / ORM / MVC 框架,具有异步 HTTP 和 WebSocket 服务器、REST/JSON、OpenAPI / Swagger、LDAP、DNS、ACME 以及加密原语。Delphi 服务器单元仅支持 Windows;FPC(Free Pascal)可为 Linux、BSD 和 macOS 构建相同的服务器代码。所有平台均支持移动客户端。
Various community authors · Varies (typically MIT / BSD / Apache)
GitHub 上发布了许多 Delphi 专用 MQTT 客户端。它们通常仅涵盖 MQTT 3.1.1 客户端,不包含 MQTT 5.0 服务器、AMQP、STOMP 或 WAMP,由个人作者维护。
勾号()表示项目文档中有原生支持记录。破折号(—)表示项目未原生提供此功能。波浪号(~)表示部分支持 / 通过插件实现 / 未明确记录——详见来源章节中我们可验证的内容。
| 功能 | sgcWebSockets | Indy (Internet Direct) | ICS (Internet Component Suite) | TMS FNC WebSocket / TMS Sparkle | mORMot 2 | Stand-alone MQTT-only libraries |
|---|---|---|---|---|---|---|
| WebSocket 客户端 RFC 6455 客户端 | ~ | — | ||||
| WebSocket 服务器 RFC 6455 服务器 | ~ | — | ||||
| TLS 1.3 所提供传输层支持 TLS 1.3 | ~ | ~ | ||||
| HTTP/2 Client 原生 HTTP/2 客户端(RFC 7540 / 9113) | — | — | ~ | — | — | |
| MQTT 内置 MQTT 3.1.1 / 5.0 客户端 | — | ~ | ~ | — | ||
| AMQP 内置 AMQP 0.9.1 / 1.0 客户端 | — | — | — | — | — | |
| STOMP 内置 STOMP 1.0 / 1.2 客户端 | — | — | — | — | — | |
| WAMP 内置 WAMP v1 / v2 客户端 | — | — | — | — | — | |
| 服务器推送 / 流 长连接推送或流传输 | ~ | ~ | ~ | |||
| 自动重连 内置客户端自动重连 / 看门狗 | — | ~ | ~ | ~ | ~ | |
| per-message-deflate(RFC 7692) WebSocket 压缩扩展 | — | ~ | ~ | ~ | — | |
| 多平台 Windows / macOS / Linux / iOS / Android | ~ | ~ | ||||
| 允许商业使用 许可证允许闭源商业使用 | ||||||
| 源代码可用 开发者可查看库的源代码 | ||||||
| 积极维护 过去 12–18 个月内有发布或标记活动 | ~ | ~ | ||||
| 许可证模型 许可证类型 | Commercial | BSD / MPL (open source) | Free, source-available | Commercial | MPL / GPL / LGPL (open source) | Varies (typically MIT / BSD / Apache) |
这里列出的每个库都有其真实用户群体。正确的选择取决于您所需的协议广度、许可证偏好以及现有的依赖关系。
当您需要 WebSocket 加消息协议(MQTT、AMQP、STOMP、WAMP)、HTTP/2 和 AI/LLM 客户端,且希望通过单一商业许可证获取一套组件、广泛支持 Delphi 7–13 及 C++ Builder、并面向 macOS、iOS、Android 和 Linux 的 FireMonkey 目标平台时,请选择 sgcWebSockets。
当 WebSocket 本身不是需求时请选择 Indy——例如,当您需要一个宽松许可证的 TCP/UDP 工具包,提供成熟的 HTTP、SMTP、POP3、IMAP、FTP 和 NNTP 支持,或者当您想用自己的 WebSocket 升级处理程序扩展现有的 TIdHTTPServer 时。Indy 随 RAD Studio 一同提供,因此不会增加您的依赖项。
当您需要一个带有 WebSocket 客户端和服务器的开源 Delphi 网络套件、基于 OpenSSL 3.x 的现代 TLS 1.3(包括 V9.6 中的后量子密码学),并且熟悉通过现有 ICS Web 服务器配置路由时,请选择 ICS。ICS 是一个长期版本,跟踪积极维护的 OpenSSL 版本。
当 WebSocket 是您在 VCL 和 FireMonkey 上唯一需要的网络协议时、当您已授权使用其他 TMS FNC 组件(可视和非可视 API 风格保持一致)时,或当您特别需要 FNC 跨框架方案(VCL 和 FMX 共用一套代码库)时,请选择 TMS FNC WebSocket。若需要 HTTP 和 HTTPS 服务托管,TMS Sparkle 与 TMS XData 配合使用。
当您需要一个 MPL/GPL/LGPL 许可的 Object Pascal 开源全栈框架(ORM、SOA、REST、WebSocket、OpenAPI)、服务器在 FPC 下的 Linux 上运行,或者需要一个跨越数据库、业务逻辑和 WebSocket 传输层的单一框架时,请选择 mORMot 2。
当 MQTT 是您唯一需要的协议、项目必须仅依赖宽松许可证的代码,并且您希望阅读每一行传输协议实现时,请选择独立 MQTT 专用库。使用前请审查所选项目的提交历史——不同作者的活跃程度差异很大。
从上述库切换时 API 和功能差异的简短说明。无意批评——仅是实用的映射关系。
Indy 提供原始 HTTP 和 TCP 管道;sgcWebSockets 内置了 WebSocket 帧处理、ping/pong、自动重连、子协议(MQTT/AMQP/STOMP/WAMP)和 per-message-deflate。如果您目前有基于 Indy 的 HTTP 服务器,sgcWebSockets 提供独立的 TsgcWebSocketHTTPServer 而非 Indy 插件——现有 HTTP 路由需要在 sgc 服务器下重新实现,或在不同端口上并行运行两者。
两个库均提供 WebSocket 客户端和基于 HTTP 的 WebSocket 服务器。命名消息协议(MQTT、AMQP、STOMP、WAMP)以及 AI/LLM 和交易所 API 客户端是 sgcWebSockets 独有的。如果您目前运行带有 WebSocket 路由的 ICS Web 服务器,sgcWebSockets 提供 TsgcWebSocketHTTPServer 作为即插即用的 HTTP+WS 主机,但路由注册 API 有所不同。
sgcWebSockets 和 TMS FNC WebSocket 均实现了 RFC 6455 客户端和服务器。通过替换组件类并重新连接事件即可完成迁移。构建于其上的协议层(MQTT、AMQP、STOMP、WAMP)、HTTP/2 客户端和服务器以及 30 多个第三方 API 集成是 sgcWebSockets 独有的。如果您单独使用 TMS MQTT,sgcWebSockets 已将 MQTT 捆绑到同一套件中。
mORMot 2 将 WebSocket 封装在其 SOA 层内;sgcWebSockets 提供独立的 WebSocket / HTTP/2 / MQTT / AMQP / STOMP / WAMP 组件,可放入任何 Delphi 项目。如果您的应用程序使用 mORMot 2 的 ORM 和 SOA 功能,切换到 sgcWebSockets 意味着需要重新实现 SOA 层;如果您仅将 mORMot 2 用于 WebSocket 传输,sgcWebSockets 是更直接的一对一替换。
如果您目前使用独立 MQTT 专用库,并开始添加 WebSocket、HTTP/2、AMQP 或 AI/LLM API 客户端,sgcWebSockets 将所有这些整合到一个套件中,提供单一许可证和统一的更新渠道。
上面矩阵中的每个单元格都可追溯到这些官方文档页面、代码库或发布说明之一。所有 URL 在撰写时均经过 HEAD 检查。