• 推荐一个.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 -

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

  • 相关阅读:
    目前和未来的缓存构建
    金仓数据库 KingbaseGIS使用手册(2. 简介)
    如何读写txt文件 C++读和写txt文件操作
    Optional .ofNullable()和flatMap()构造请求参数
    百度知道本地搭建环境无限制采集聚合【最新版】
    求一篇排除干扰信息对目标检测改进的论文
    jQuery之基本概念和封装原理
    XMLHttpRequest介绍
    【Python机器学习】零基础掌握isotonic_regression等渗回归
    二十三种设计模式全面解析-装饰器模式-超越继承的灵活装扮
  • 原文地址:https://www.cnblogs.com/chingho/p/17112647.html