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

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐一个.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 -

觉得好看 点个在看👇

以上是关于推荐一个.Net Core开发的Websocket群聊私聊的开源项目的主要内容,如果未能解决你的问题,请参考以下文章

快速搭建CentOS+ASP.NET Core环境支持WebSocket

.NETCOREASP.NET Core SignalR

在 .Net Core 中序列化 WebSocket 对象

推荐这10个优秀的.NET Core开源项目!

如何入门.NET Core ? 推荐这10个优秀的开源项目!

C# .NET Core websocket ssl 问题 - dh 密钥太小