wsx 发表于 2025-2-7 01:17:43

Fleck:一个轻量级的C#开源WebSocket服务端库

推荐一个简单易用、轻量级的C#开源WebSocket服务端库,方便我们快速实现WebSocket的开发。
01 项目简介

Fleck 是一个用 C# 编写的轻量级 WebSocket 服务器库。它提供了一个简单而直观的 API,使得开发者可以轻松地在他们的应用程序中集成 WebSocket 功能,比如一些常见的实时通信应用,在线游戏、聊天应用和实时数据更新等场景。
Fleck 的设计目标是易于使用和高性能,同时保持代码的简洁性。
02 项目优缺点

1、优点
简单易用:Fleck 的 API 设计简洁,不需要复杂的配置或继承,使得开发者可以快速上手。
无依赖:Fleck 不依赖于 HttpListener 或 HTTP.sys,这意味着它可以在没有这些组件的系统上运行,如 Windows 7 和 Server 2008。
2、缺点
功能限制:Fleck 专注于简单和轻量,不包含一些高级功能,如复杂的认证机制或详细的统计信息。
03 使用方法

1、一个简单的 WebSocket 服务器的示例
// 创建一个新的 WebSocket 服务器实例,监听在所有网络接口的 8181 端口上。var server = new WebSocketServer("ws://0.0.0.0:8181");// 调用 server 实例的 Start 方法启动服务器。// Start 方法接受一个 lambda 表达式作为参数,该表达式定义了如何处理新的 WebSocket 连接。server.Start(socket =>{    // 当 WebSocket 连接打开时,触发 OnOpen 事件,并输出 "Open!" 到控制台。    socket.OnOpen = () => Console.WriteLine("Open!");    // 当 WebSocket 连接关闭时,触发 OnClose 事件,并输出 "Close!" 到控制台。    socket.OnClose = () => Console.WriteLine("Close!");    // 当服务器接收到来自客户端的消息时,触发 OnMessage 事件。    // 这个事件的处理程序接收一个参数 message,它包含了从客户端接收到的消息。    // 然后,使用 socket.Send 方法将接收到的消息发送回客户端。    socket.OnMessage = message => socket.Send(message);});2、安全WebSockets (wss://)
// 创建一个新的 WebSocket 服务器实例,监听在所有网络接口的 8431 端口上,并使用 wss 协议,即 WebSocket Secure。var server = new WebSocketServer("wss://0.0.0.0:8431");// 为服务器设置一个 X509 证书,这个证书用于建立 TLS/SSL 加密连接。// "MyCert.pfx" 是证书文件的名称,通常包含证书和私钥。server.Certificate = new X509Certificate2("MyCert.pfx");// 调用 server 实例的 Start 方法启动服务器。server.Start(socket =>{    //...use as normal });3、子协议
// 创建一个新的 WebSocket 服务器实例,监听在所有网络接口的 8181 端口上,并使用 ws 协议,即非加密的 WebSocket。var server = new WebSocketServer("ws://0.0.0.0:8181");// 设置服务器支持的子协议列表。子协议允许客户端和服务器之间协商使用特定的通信协议。// 在这个例子中,服务器声明支持 "superchat" 和 "chat" 两个子协议。server.SupportedSubProtocols = new []{ "superchat", "chat" };// 调用 server 实例的 Start 方法启动服务器。// Start 方法接受一个 lambda 表达式作为参数,该表达式定义了如何处理新的 WebSocket 连接。server.Start(socket =>{    //socket.ConnectionInfo.NegotiatedSubProtocol is populated});4、自定义日志
ILog logger = LogManager.GetLogger(typeof(FleckLog));FleckLog.LogAction = (level, message, ex) => {switch(level) {    case LogLevel.Debug:      logger.Debug(message, ex);      break;    case LogLevel.Error:      logger.Error(message, ex);      break;    case LogLevel.Warn:      logger.Warn(message, ex);      break;    default:      logger.Info(message, ex);      break;}};5、禁用Nagle算法
var server = new WebSocketServer("ws://0.0.0.0:8181");server.ListenerSocket.NoDelay = true;server.Start(socket =>{//Child connections will not use Nagle's Algorithm});6、自动监测错误重新启动
var server = new WebSocketServer("ws://0.0.0.0:8181");server.RestartAfterListenError = true;server.Start(socket =>{//...use as normal});04
支持WebSocket版本
Hixie-Draft-76/Hybi-00(Safari 5,Chrome < 14,Firefox 4)
Hybi-07(Firefox 6)
Hybi-10(Chrome 14-16,Firefox 7)
Hybi-13(Chrome 17+,Firefox 11+,Safari 6+,Edge 13+(?))
05 项目地址

https://github.com/statianzo/Fleck
更多开源项目:https://github.com/bianchenglequ/NetCodeTop
- End -
推荐阅读
2个零基础入门框架教程!
推荐一个Star超过2K的.Net轻量级的CMS开源项目
Pidgin:一个轻量级、快速且灵活的 C# 解析库
Atata:一个基于 Selenium的C#自动化测试Web框架
mongo-csharp-driver:MongoDB官方的C#客户端驱动程序!
页: [1]
查看完整版本: Fleck:一个轻量级的C#开源WebSocket服务端库