更多开源项目请查看:一个专注推荐.Net开源项目的榜单
今天给大家推荐一个使用Websocket协议实现的、高性能即时聊天组件,可用于群聊、好友聊天、游戏直播等场景。
项目简介
这是一个基于.Net Core开发的、简单、高性能的通讯组件,支持点对点发送、群聊、在线状态的订阅。
该项目还包含群聊例子,可以用于学习。
技术架构
1、跨平台:基于.NetCore开发,支持Windows、Mono、Liunx、Windows Azure、Docker。
2、支持 .NetCore 6.0+。
3、组件:Redis。
组件功能
1、点对点通讯;
2、是否在线获取,以及在线状态订阅;
3、加入频道、离开频道、获取在线人数、清理未在线的客户端、获取客户加入的所有频道、发送群聊消息。
项目结构
FreeIM为通讯组件,ImServer为服务端、WebApi为群聊前端。
使用例子
服务端
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Console.OutputEncoding = Encoding.GetEncoding("GB2312"); Console.InputEncoding = Encoding.GetEncoding("GB2312"); app.UseDeveloperExceptionPage(); app.UseFreeImServer(new ImServerOptions { Redis = new FreeRedis.RedisClient(Configuration["ImServerOption:RedisClient"]), Servers = Configuration["ImServerOption:Servers"].Split(";"), Server = Configuration["ImServerOption:Server"] }); }
配置信息
"ImServerOption": { //Reidis地址 "RedisClient": "127.0.0.1:6379,poolsize=10", //集群地址,可以配置多个 "Servers": "127.0.0.1:6001", //服务端地址 "Server": "127.0.0.1:6001" }
群聊客户端
public void Configure(IApplicationBuilder app) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Console.OutputEncoding = Encoding.GetEncoding("GB2312"); Console.InputEncoding = Encoding.GetEncoding("GB2312"); app.UseDeveloperExceptionPage(); app.UseRouting(); app.UseEndpoints(config => config.MapControllers()); app.UseDefaultFiles(); app.UseStaticFiles(); //Redis、服务端地址 ImHelper.Initialization(new ImClientOptions { Redis = new FreeRedis.RedisClient("127.0.0.1:6379,poolsize=10"), Servers = new[] { "127.0.0.1:6001" } }); ImHelper.Instance.OnSend += (s, e) => Console.WriteLine($"ImClient.SendMessage(server={e.Server},data={JsonConvert.SerializeObject(e.Message)})"); //发送消息 ImHelper.EventBus( t => { Console.WriteLine(t.clientId + "上线了"); var onlineUids = ImHelper.GetClientListByOnline(); ImHelper.SendMessage(t.clientId, onlineUids, $"用户{t.clientId}上线了"); }, t => Console.WriteLine(t.clientId + "下线了")); }
群聊截图
项目地址
- End -
推荐阅读