当前位置: 首页 > news >正文

推荐一个.Net Core开发的Websocket群聊、私聊的开源项目

更多开源项目请查看:一个专注推荐.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 + "下线了"));
}

群聊截图

项目地址

https://github.com/2881099/FreeIM

- End -

推荐阅读

推荐一个前后端分离.NetCore+Angular快速开发框架

阅读开源项目源代码的方法与心得

一个强大、支持100多种格式.Net图片操作库

基于.NetCore+React单点登录系统

一款统计摸鱼时长的开源项目

http://www.lryc.cn/news/28651.html

相关文章:

  • 华为OD机试Golang解题 - 事件推送 | 含思路
  • 将微信小程序页面转为图片
  • LINE、SDNE和struc2vec图嵌入算法学习笔记
  • Buuctf Younger-drive 题解
  • 数据结构与算法:二叉树专题
  • Cadence Allegro 导出Cadence Schematic Feedback Report详解
  • 《计算机系统基础》—— 运算
  • MSTP多进程讲解与实验配置
  • 【Python】软件测试必备:了解 fixture 在自动化测试中的重要作用
  • DevExpress皮肤引用的办法
  • 2023-03-04 区分纳米颗粒核壳原子
  • review设备管理
  • Cadence Allegro 导出Bill of Material Report (Condensed)详解
  • B. Sherlock and his girlfriend
  • Spring SpEL表达式
  • Nginx反向代理原理详解与配置
  • Happen-Before从入门到踹门
  • 电力系统系统潮流分析【IEEE 57 节点】(Matlab代码实现)
  • Java——N皇后问题
  • Mybatis一级缓存与二级缓存
  • LQB,手打,PCF8591,ADDA转换,AD1是光敏电阻,AD3是电位器,DA输出
  • 【计组笔记06】计算机组成与原理之控制器和总线结构
  • elisp简单实例: auto-save
  • 写字楼/园区/购物中心空置率太高?快用快鲸智慧楼宇系统
  • 【JavaSE】数组的定义和使用(上)
  • 计算机的学习路线
  • TD算法超详细解释,一篇文章看透彻!
  • 4.1 路由器(华硕 官改/梅林 华为 小米 路由) 使用花生壳 实现远程管理
  • 内容算法解读:提高内容摘要与原文的一致性(Faithfulness)
  • python用openpyxl包操作xlsx文件,统计表中合作电影数目最多的两个演员