与 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
esegece.sgcWebSockets:从 nuget.org 安装,覆盖所有 .NET 目标
免费下载,支持 Windows、Linux 64 位和 macOS 64 位(包含提示窗口)
那些您本来要自己动手构建的部分,已经在盒子里。
两端均实现 RFC 6455,支持 per-message-deflate 压缩(RFC 7692)以及所提供传输上最高至 1.3 的 TLS。
客户端的 WatchDog 和 HeartBeat 属性让长连接保持活动,并在网络中断后自动重建,无需额外代码。
内置 MQTT 3.1.1 / 5.0、AMQP 0.9.1 / 1.0、STOMP 和 WAMP 客户端。用同一个库对接 RabbitMQ、HiveMQ、Azure Service Bus 或 ActiveMQ。
同一软件包中的原生 HTTP/2 客户端(RFC 9113),适用于 Apple 推送通知等要求 HTTP/2 的 API。
服务器组件通过 HTTP.SYS 绑定,因此可以与 IIS 共享 80/443 端口,用一个进程同时提供 HTTP 和 WebSocket 服务。
TsgcWSAPI_SignalR 和 TsgcWSAPI_SignalRCore 实现了 SignalR 客户端线级协议,让 sgcWebSockets 客户端可以对接现有的 ASP.NET Core SignalR 服务器。
OpenAI、Anthropic、Gemini、DeepSeek、Grok、Ollama、Mistral 和 MCP 客户端随同一套件提供,与 Delphi AI 家族保持一致。
客户端和服务器公开 Authentication、Proxy 和 TLSOptions / SSLOptions 属性组;服务器另有 OnAuthentication 事件用于凭据检查。
两个平台使用完全相同的 Tsgc* 类名和事件,让同时运行 Delphi 和 .NET 的团队只需维护一套思维模型。
设置几个属性,连接事件,设置 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 Edition 是可完整运行的构建,支持 Windows、Linux 64 位和 macOS 64 位,仅显示一个提示窗口,是在您自己的解决方案中评估该库的最快方式。.NET 的版本分为 Community、Professional 和 Enterprise,三者提供完全相同的组件集,均包含 WebSocket 客户端和 WebSocket 服务器。商业版本的差异在于许可而非功能:Professional 移除提示窗口、附带公共 C# 接口源码并授予商业再分发许可;Enterprise 则增加用于重新构建程序集的完整 C# 源代码以及优先支持。
各版本逐组件的对比请参阅完整的 .NET 功能矩阵。
中立、注明来源的调研:sgcWebSockets .NET 对比 System.Net.WebSockets、SignalR、WebSocket-Sharp、Fleck 和 Watson。
.NET 上 TsgcWebSocketClient 的组件参考:属性、方法、事件。
.NET 上 TsgcWebSocketHTTPServer 的组件参考:HTTP.SYS、共享端口、TLS。
每个组件和协议,按版本和目标框架细分。
从 nuget.org 安装 esegece.sgcWebSockets 并跑通第一个连接。
Community Edition、已编译的演示程序以及 ASP.NET Core + React 示例。