WebSocket 库 C# (.NET):SignalR、Fleck、WebSocketSharp

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

WebSocket 库 C# (.NET):SignalR、Fleck 和 WebSocketSharp



WebSocket 是一种基于 TCP 的全双工通信协议,允许服务器和客户端实时交换数据,无需持续的 HTTP 请求。在 C# (.NET) 生态系统中,有多个库可以简化 WebSocket 的集成。本文将介绍三种最流行的解决方案:SignalR(微软官方库)、Fleck(轻量级服务器)和 WebSocketSharp(通用客户端-服务器库)。



1. SignalR — 微软官方工具



SignalR 是 ASP.NET Core 的高级库,可根据客户端能力自动选择最佳传输方式(WebSocket、Server-Sent Events、Long Polling)。它非常适合创建聊天、仪表盘和游戏。



主要功能:

  • 传输方式自动切换。
  • 群组和广播。
  • 支持扩展(Redis、Azure SignalR Service)。
  • 与 JavaScript、.NET、Java 客户端集成。


C# 服务端 Hub 示例:

using Microsoft.AspNetCore.SignalR;

public class ChatHub : Hub{ public async Task SendMessage(string user, string message) { // 向所有连接的客户端广播消息 await Clients.All.SendAsync("ReceiveMessage", user, message); }

public override async Task OnConnectedAsync() { await Clients.Caller.SendAsync("Notify", "您已连接到聊天"); await base.OnConnectedAsync(); }}


C# 客户端示例(控制台):

using Microsoft.AspNetCore.SignalR.Client;

var connection = new HubConnectionBuilder() .WithUrl("https://yourserver.com/chathub") .Build();

connection.On<string, string>("ReceiveMessage", (user, message) =>{ Console.WriteLine($"{user}: {message}");});

await connection.StartAsync();await connection.InvokeAsync("SendMessage", "User1", "你好!");


2. Fleck — 极简 WebSocket 服务器



Fleck 是一个轻量级库,用于创建不依赖 ASP.NET 的 WebSocket 服务器。它非常适合不需要 SignalR 复杂抽象层的简单应用。



特点:

  • 基于纯 TCP(无 HTTP)。
  • 支持 SSL(WSS)。
  • 无内置扩展支持 — 仅单进程。


Fleck 服务器示例:

using Fleck;

var server = new WebSocketServer("ws://0.0.0.0:8181");var connections = new List<IWebSocketConnection>();

server.Start(socket =>{ socket.OnOpen = () => { Console.WriteLine("客户端已连接"); connections.Add(socket); }; socket.OnClose = () => { Console.WriteLine("客户端已断开"); connections.Remove(socket); }; socket.OnMessage = message => { // 向所有客户端发送消息 foreach (var client in connections) { client.Send($"回声: {message}"); } };});

Console.WriteLine("服务器已启动于 ws://localhost:8181");Console.ReadLine();


3. WebSocketSharp — 通用客户端和服务器



WebSocketSharp 是一个开源库,提供客户端和服务器端的 WebSocket 功能。它不依赖 ASP.NET,可在 .NET Framework 和 .NET Core 上运行。



关键功能:

  • 支持 SSL/TLS 和代理。
  • 事件驱动模型(OnOpen、OnClose、OnMessage、OnError)。
  • 支持发送二进制数据(byte[])。


WebSocketSharp 客户端示例:

using WebSocketSharp;

using (var ws = new WebSocket("wss://echo.websocket.org")){ ws.OnMessage += (sender, e) =>

推荐