.NET WebSocket 库 | C# 客户端与服务器组件 | eSeGeCe

.NET WebSocket 库——面向 C# 的客户端与服务器

sgcWebSockets .NET 是面向 C# 的完整 WebSocket 客户端和服务器库:RFC 6455 帧处理、TLS、per-message-deflate 压缩、自动重连,同一软件包中还有 MQTT、AMQP、STOMP 和 WAMP 子协议以及 HTTP/2。可从 NuGet 安装 esegece.sgcWebSockets,或从免费的 Community Edition 开始。

一个库覆盖 .NET Framework 2.0 到 .NET 9

与 Delphi 产品相同的组件套件移植到 C#,类名相同,事件驱动的 API 也相同。

一个 .NET WebSocket 库应当覆盖的不止是线级协议。System.Net.WebSockets 提供 RFC 6455 帧处理;sgcWebSockets .NET 在其之上补齐生产应用所需:可运行在 TCP 或 HTTP.SYS 上的服务器(与 IIS 共享端口)、带看门狗自动重连和心跳的客户端、消息排队、代理与身份验证支持,以及消息传递子协议(MQTT、AMQP、STOMP、WAMP),否则这些还得再引入三个依赖。

目标框架覆盖异常广泛:.NET Framework 2.0–4.8.1、.NET Core 1.0–3.1、.NET 5/6/7/8/9 以及 .NET Standard 1.6/2.0,支持 Windows、Linux 和 macOS。传统 WinForms 应用程序和现代 ASP.NET Core 服务使用同一个软件包、同一套代码。

客户端

TsgcWebSocketClient:带 TLS、代理、心跳和看门狗的 RFC 6455 客户端

服务器

TsgcWebSocketHTTPServer:基于 HTTP.SYS 的 WebSocket + HTTP 服务器,共享端口,SSL/TLS

NuGet

esegece.sgcWebSockets:从 nuget.org 安装,覆盖所有 .NET 目标

Community Edition

免费下载,支持 Windows、Linux 64 位和 macOS 64 位(包含提示窗口)

不止于 WebSocket 帧处理

那些您本来要自己动手构建的部分,已经在盒子里。

WebSocket 客户端与服务器

两端均实现 RFC 6455,支持 per-message-deflate 压缩(RFC 7692)以及所提供传输上最高至 1.3 的 TLS。

看门狗自动重连

客户端的 WatchDogHeartBeat 属性让长连接保持活动,并在网络中断后自动重建,无需额外代码。

消息传递协议

内置 MQTT 3.1.1 / 5.0、AMQP 0.9.1 / 1.0、STOMP 和 WAMP 客户端。用同一个库对接 RabbitMQ、HiveMQ、Azure Service Bus 或 ActiveMQ。

HTTP/2

同一软件包中的原生 HTTP/2 客户端(RFC 9113),适用于 Apple 推送通知等要求 HTTP/2 的 API。

HTTP.SYS 服务器

服务器组件通过 HTTP.SYS 绑定,因此可以与 IIS 共享 80/443 端口,用一个进程同时提供 HTTP 和 WebSocket 服务。

SignalR 线级客户端

TsgcWSAPI_SignalRTsgcWSAPI_SignalRCore 实现了 SignalR 客户端线级协议,让 sgcWebSockets 客户端可以对接现有的 ASP.NET Core SignalR 服务器。

AI/LLM API 客户端

OpenAI、Anthropic、Gemini、DeepSeek、Grok、Ollama、Mistral 和 MCP 客户端随同一套件提供,与 Delphi AI 家族保持一致。

身份验证与安全

客户端和服务器公开 AuthenticationProxyTLSOptions / SSLOptions 属性组;服务器另有 OnAuthentication 事件用于凭据检查。

与 Delphi 相同的 API

两个平台使用完全相同的 Tsgc* 类名和事件,让同时运行 Delphi 和 .NET 的团队只需维护一套思维模型。

用 C# 写一个客户端和一个服务器

设置几个属性,连接事件,设置 Active。整个模式就是这样。

using esegece.sgcWebSockets;

var client = new TsgcWebSocketClient();
client.Host = "127.0.0.1";
client.Port = 80;
client.TLS = true;
client.Options.Parameters = "/ws/";

client.OnConnect    += (conn) => Console.WriteLine("#connected: " + conn.IP);
client.OnDisconnect += (conn, code) => Console.WriteLine("#disconnected: " + code);
client.OnMessage    += (conn, text) => Console.WriteLine(text);
client.OnException  += (conn, ex) => Console.WriteLine("#exception: " + ex.Message);

client.Active = true;
client.WriteData("hello");
using esegece.sgcWebSockets;

var server = new TsgcWebSocketHTTPServer();
server.Port = 80;

server.OnConnect    += (conn) => server.WriteData("welcome " + conn.IP);
server.OnMessage    += (conn, text) => server.WriteData(text);
server.OnDisconnect += (conn, code) => Console.WriteLine("#bye " + conn.IP);
server.OnAuthentication += (conn, user, pass, ref ok) =>
    { ok = (user == "admin" && pass == "s3cret"); };

server.Active = true;

从免费的 Community 到 Enterprise

免费的 Community Edition 是可完整运行的构建,支持 Windows、Linux 64 位和 macOS 64 位,仅显示一个提示窗口,是在您自己的解决方案中评估该库的最快方式。.NET 的版本分为 CommunityProfessionalEnterprise,三者提供完全相同的组件集,均包含 WebSocket 客户端和 WebSocket 服务器。商业版本的差异在于许可而非功能:Professional 移除提示窗口、附带公共 C# 接口源码并授予商业再分发许可;Enterprise 则增加用于重新构建程序集的完整 C# 源代码以及优先支持。

各版本逐组件的对比请参阅完整的 .NET 功能矩阵

sgcWebSockets .NET 的更多内容

.NET WebSocket 库对比

中立、注明来源的调研:sgcWebSockets .NET 对比 System.Net.WebSockets、SignalR、WebSocket-Sharp、Fleck 和 Watson。

.NET WebSocket 客户端

.NET 上 TsgcWebSocketClient 的组件参考:属性、方法、事件。

.NET WebSocket 服务器

.NET 上 TsgcWebSocketHTTPServer 的组件参考:HTTP.SYS、共享端口、TLS。

.NET 功能矩阵

每个组件和协议,按版本和目标框架细分。

博客:NuGet 软件包

从 nuget.org 安装 esegece.sgcWebSockets 并跑通第一个连接。

下载

Community Edition、已编译的演示程序以及 ASP.NET Core + React 示例。

Best value: All-AccessEvery eSeGeCe product, Premium Support included, from €1,059/year.
See All-Access pricing

立即为您的 .NET 应用添加 WebSocket

从 NuGet 安装 esegece.sgcWebSockets,或获取免费的 Community Edition 并运行演示程序。