推荐一个.Net Core开发的Websocket群聊、私聊的开源项目
今天给大家推荐一个使用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 + "下线了"));
}
群聊截图

项目地址
更多开源项目请查看:一个专注推荐优秀.Net开源项目的榜单
- End -
文章首发于公众号【编程乐趣】,欢迎大家关注。

推荐一个.Net Core开发的Websocket群聊、私聊的开源项目的更多相关文章
- Websocket 群聊功能
websocket 群聊 前提关闭防火墙 写入代码 from flask import Flask,request,render_template from geventwebsocket.handl ...
- .NET开发人员值得关注的七个开源项目 .
NET开发人员值得关注的七个开源项目 软近几年在.NET社区开源项目方面投入了相当多的时间和资源,不禁让原本对峙的开源社区阵营大吃一惊,从微软.NET社区中的反应来看,微软.NET开发阵营对开源工具的 ...
- WebSocket群聊与单聊
一 . WebSocket实现群聊 py文件代码 # py文件 from flask import Flask, render_template, request from geventwebsock ...
- websocket 群聊单聊
websocket 介绍 介绍引自 https://segmentfault.com/a/1190000012709475 群聊 from flask import Flask, request, r ...
- websocket 群聊,单聊,加密,解密
群聊 from flask import Flask, request, render_templatefrom geventwebsocket.handler import WebSocketHan ...
- android 开发,视频群聊引发短信异常
说到 NDK 开发,其实是为了有些时候为了项目需求需要调用底层的一些 C/C++ 的一些东西:另外就是为了效率更加高些. 但是很多时候能不用就不用:这个是啥原因?个人感觉有些时候是觉得麻烦,首先要配置 ...
- 【C/C++开发】值得学习的C语言开源项目
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在Linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...
- Android开发:为什么我们从来不去感谢开源项目维护者?
今天我想谈一谈,为什么我们很少去感谢开源项目维护者: 一.这样的项目我也可以做啊 “蛤?这项目对我来说也太简单了吧.” “我一周之内就能做一个更好的版本出来.” 确实,很多人都可以在 Hackatho ...
- iOS开发资源:推送通知相关开源项目--PushSharp、APNS-PHP以及Pyapns等
PushSharp (github) PushSharp是一个实现了由服务器端向移动客户端推送消息的开源C#库,支持 iOS (iPhone/iPad APNS). Android (C2DM/GC ...
- Java 网络编程 -- 基于TCP 实现聊天室 群聊 私聊
分析: 聊天室需要多个客户端和一个服务端. 服务端负责转发消息. 客户端可以发送消息.接收消息. 消息分类: 群聊消息:发送除自己外所有人 私聊消息:只发送@的人 系统消息:根据情况分只发送个人和其他 ...
随机推荐
- Arrays.asList()需要注意的点
千万不要这样使用Arrays.asList ! 测试的几种情况及原因: public static void main(String[] args) { //第一种基本类型数组 int[] arr = ...
- 随便记录一些使用IDEA在ssm阶段的踩过的坑
重命名中括号问题:需要重命名模块+目录 Intellij idea 报错:Error : java 不支持发行版本5_灵颖桥人的博客-CSDN博客_不支持发行版本5 idea中的目标字节码版本总是自动 ...
- ArcEngine(平板电脑墨迹错误代码。多次调用 RtpEnabled (异常来自 HRESULT:0x80040239))问题未有效解决
测试数据库中的要素无法执行ITopologicOperater接口下的方法,错误如图 暂记,错误未解决 tip: 1.随便移动一个节点 也不报错/ 2.手动按照他的节点画一个也不报错 3.bufer参 ...
- 视频播放-videojs
视频播放-video-js组件 安装 yarn add video.js --save npm install video.js --save 代码 import React, { useEffect ...
- 手把手带你玩转Linux
今天这篇文章带你走进Linux世界的同时,带你手把手玩转Linux,加深对Linux系统的认识. 一.搞好Linux工作必须得不断折腾,说白了,只是动手力量必须强.我在初学Linux的那片,家中三台计 ...
- IDEA配置JDK版本的地方, 适用于Compilation failed: internal java compiler error
错误原因: 1. 编译版本不匹配 2.当前项目jdk版本不支持 解决方法 查看项目的jdk 查看工程的jdk 查看java编译器版本 讲这些改成自己需要的版本, 一般就可以解决编译版本出现的错误
- AcWing刷题记录 - 2022
AcWing 1813. 方块游戏 思路 枚举,题目说明不管哪一面向上都可以,所以就两面加起来取各个字母的最大值,最后N对字母的最大值相加就是答案 代码 #include<bits/stdc++ ...
- CTF-Web-PHP反序列化
概念解释 PHP 反序列化漏洞又叫做 PHP 对象注入漏洞,我觉得这个表达很不直白,也不能说明根本的问题,不如我们叫他 PHP 对象的属性篡改漏洞好了(别说这是我说的~~) 反序列化漏洞的成因在于代码 ...
- Java中的命名规范
Java中的命名规范 一. 常规约定 类一般采用大驼峰命名,方法和局部变量使用小驼峰命名,而大写下划线命名通常是常量和枚举中使用. 类型 约束 例 项目名 全部小写,多个单词用中划线分隔'-' spr ...
- w10共享打印机出现011b错误
错误描述:在更新里面没有发现所说的500补丁,可就是报上面的错误,然后百度找答案 解决方案1 WIN10无法连接共享打印机0x0000011b的解决方法,不用卸载更新,在共享打印机的电脑上,打开注册表 ...