• 推荐一个.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 + "下线了"));
    }
    

    群聊截图

    项目地址

    https://github.com/2881099/FreeIM

    更多开源项目请查看一个专注推荐优秀.Net开源项目的榜单

    - End -

    文章首发于公众号【编程乐趣】,欢迎大家关注。
    图片

  • 相关阅读:
    怎样在VS code中设置默认font-size的大小(运用在px转rem中)
    中国各朝代行政区划、点位矢量数据下载与背景介绍
    iOS学习 --- iOS12对象序列化(NSKeyedArchiver/NSKeyedUnarchiver)
    Java json 格式化小工具兼容转义 json 串
    Spring AOP
    汇编:lea 需要注意的一点
    Vue的MVVM实现原理
    【光流法实现目标追踪:Python实战指南】
    Java并发编程的艺术笔记-Java中的线程池
    Vue中实现自定义编辑邮件发送到指定邮箱(纯前端实现)
  • 原文地址:https://www.cnblogs.com/chingho/p/17112647.html