首页 > 其他分享 >推荐一个.Net Core开发的Websocket群聊、私聊的开源项目

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

时间:2023-05-10 13:11:07浏览次数:47  
标签:Core 群聊 Encoding 0.1 app 私聊 Console new 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 -

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

标签:Core,群聊,Encoding,0.1,app,私聊,Console,new,Websocket
From: https://www.cnblogs.com/chingho/p/17112647.html

相关文章

  • C# .Net Core 合并PDF文件
    使用PdfSharpCorenuget包代码实现usingMicrosoft.AspNetCore.Razor.TagHelpers;usingPdfSharpCore.Pdf;usingPdfSharpCore.Pdf.IO;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespace......
  • .Net Core 2. VS2022 + Core6.0 + Razor 添加模型
    这里基本是按照微软的文档示例整理的 添加数据模型在项目中新增Models文件夹,用于存放数据模型 新增movie类usingSystem.ComponentModel.DataAnnotations;namespaceStandardCoreStudy.Models{publicclassMovie{///<summary>///ID......
  • Customising claims transformation in ASP.NET Core Identity
    I’vebeentestingoutthenewversionofASP.NETIdentityandhadtheneedtoincludeadditionalclaimsinthe ClaimIdentity generatedwhenauserisauthenticated.TransformingClaimsIdentityASP.NETCoresupportsClaimsTransformationoutofthebox.J......
  • 【asp.net core】自定义模型绑定及其验证
    引言水此篇博客,依旧是来自群里的讨论,最后说到了,在方法参数自定义了一个特性,用来绑定模型,优先从Form取,如果为空,或者不存在,在从QueryString中获取并且绑定,然后闲着无聊,就水一篇博客,如果大家有什么需求或者问题,可以找我,很高兴能为你们带来帮助。IModelBinderFactory......
  • 【HMS Core】Health Kit想要查看数据是来自用户的哪个设备,如何查看?
     【问题描述1】如何查看运动健康数据是来自用户的哪个设备?【解决方案】可以通过返回的数据中携带的dataCollectorId来查询提供数据的设备信息:请求示例(以查询睡眠记录详情为例):1、查询睡眠记录并关联睡眠状态采样数据:​2、根据关联采样数据返回的dataCollectorId调用查询指......
  • websocket多实例推送解决方案-数据实时展示
    需求需要前端展示实时的订单数据信息。如下图所示,实时下单实时页面统计更新展示 思路方案前端使用websocket建立通信  后端监听数据库的binglog变更,实时得到最新数据,推送到前端 现状及问题客户端想实现实时获取数据的变更,使用了websocket+kafkaMq,当......
  • 使用 Ef core 时 报错Data is Null. This method or property cannot be called on
    1.问题在使用EFcore做查询操作的时候报错"DataisNull.ThismethodorpropertycannotbecalledonNullvalues.”"2.解决这是数据库中的某个属性为空导致,即使这个属性srting类型,也需要将字段标记为可空的......
  • websocket.go
    packagemainimport("encoding/json""fmt""net/http""github.com/gorilla/websocket")varUP=websocket.Upgrader{ReadBufferSize:1024,WriteBufferSize:1024,CheckOrigin:func(r*http.Request)bool{returntr......
  • C# .net core 返回json 中文字符编码被转换或乱码问题
    开发环境VS2022+.NET6.0现象接口返回Json中文数据时出现乱码。例如后台返回结果:"0506133015\u56FE\u8868\u9009\u62E9.png"。解决办法以下方法任选其一即可。//方法1:在Program.cs中添加以下代码varbuilder=WebApplication.CreateBuilder(args);builder.Services.Ad......
  • 【Dotnet 工具箱】DotNetCorePlugins- 动态加载和卸载 .NET 程序插件
    你好,这里是Dotnet工具箱,定期分享Dotnet有趣,实用的工具和组件,希望对您有用!1.DotNetCorePlugins-动态加载和卸载.NET程序插件DotNetCorePlugins是一个.NET的开源插件项目,它提供了能够动态加载程序集的API,然后把它们作为.NET主程序的扩展程序执行。这个库主要用到了......