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

Fleck:一个轻量级的C开源WebSocket服务端库我是编程乐趣 一个 10 年 Net 开发经验老程序员 点击右上方 关注 每天为你分享开源项目和编程知识 推荐一个简单易用 轻量级的 C 开源 WebSocket 服务端库 方便我们快速实现 WebSocket 的开发

欢迎大家来到IT世界,在知识的湖畔探索吧!

我是编程乐趣,一个10年.Net开发经验老程序员,点击右上方“关注”,每天为你分享开源项目和编程知识。

推荐一个简单易用、轻量级的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); });

欢迎大家来到IT世界,在知识的湖畔探索吧!

2、安全WebSockets (wss://)

欢迎大家来到IT世界,在知识的湖畔探索吧!// 创建一个新的 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、自定义日志

欢迎大家来到IT世界,在知识的湖畔探索吧!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、自动监测错误重新启动

欢迎大家来到IT世界,在知识的湖畔探索吧!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

– End –

更多.Net开源项目合集:
https://github.com/bianchenglequ/NetCodeTop

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/104491.html

(0)
上一篇 2小时前
下一篇 2小时前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信