今天給大家推薦一個(gè)使用Websocket協(xié)議實(shí)現(xiàn)的、高性能即時(shí)聊天組件,可用于群聊、好友聊天、游戲直播等場(chǎng)景。
項(xiàng)目簡(jiǎn)介
這是一個(gè)基于.Net Core開發(fā)的、簡(jiǎn)單、高性能的通訊組件,支持點(diǎn)對(duì)點(diǎn)發(fā)送、群聊、在線狀態(tài)的訂閱。
該項(xiàng)目還包含群聊例子,可以用于學(xué)習(xí)。
技術(shù)架構(gòu)
1、跨平臺(tái):基于.NetCore開發(fā),支持Windows、Mono、Liunx、Windows Azure、Docker。
2、支持 .NetCore 6.0+。
3、組件:Redis。
組件功能
1、點(diǎn)對(duì)點(diǎn)通訊;
2、是否在線獲取,以及在線狀態(tài)訂閱;
3、加入頻道、離開頻道、獲取在線人數(shù)、清理未在線的客戶端、獲取客戶加入的所有頻道、發(fā)送群聊消息。
項(xiàng)目結(jié)構(gòu)
FreeIM為通訊組件,ImServer為服務(wù)端、WebApi為群聊前端。
使用例子
服務(wù)端
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",
??//集群地址,可以配置多個(gè)
"Servers": "127.0.0.1:6001",
??//服務(wù)端地址
"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、服務(wù)端地址
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)})");
//發(fā)送消息
ImHelper.EventBus(
t =>
{
Console.WriteLine(t.clientId + "上線了");
var onlineUids = ImHelper.GetClientListByOnline();
ImHelper.SendMessage(t.clientId, onlineUids, $"用戶{t.clientId}上線了");
},
t => Console.WriteLine(t.clientId + "下線了"));
}
群聊截圖
項(xiàng)目地址
https://github.com/2881099/FreeIM
更多開源項(xiàng)目請(qǐng)查看:一個(gè)專注推薦優(yōu)秀.Net開源項(xiàng)目的榜單
- End -文章來源:http://www.zghlxwxcb.cn/news/detail-437948.html
文章首發(fā)于公眾號(hào)【編程樂趣】,歡迎大家關(guān)注。文章來源地址http://www.zghlxwxcb.cn/news/detail-437948.html
到了這里,關(guān)于推薦一個(gè).Net Core開發(fā)的Websocket群聊、私聊的開源項(xiàng)目的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!