今天给大家推荐一个使用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 -

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

推荐一个.Net Core开发的Websocket群聊、私聊的开源项目的更多相关文章

  1. Websocket 群聊功能

    websocket 群聊 前提关闭防火墙 写入代码 from flask import Flask,request,render_template from geventwebsocket.handl ...

  2. .NET开发人员值得关注的七个开源项目 .

    NET开发人员值得关注的七个开源项目 软近几年在.NET社区开源项目方面投入了相当多的时间和资源,不禁让原本对峙的开源社区阵营大吃一惊,从微软.NET社区中的反应来看,微软.NET开发阵营对开源工具的 ...

  3. WebSocket群聊与单聊

    一 . WebSocket实现群聊 py文件代码 # py文件 from flask import Flask, render_template, request from geventwebsock ...

  4. websocket 群聊单聊

    websocket 介绍 介绍引自 https://segmentfault.com/a/1190000012709475 群聊 from flask import Flask, request, r ...

  5. websocket 群聊,单聊,加密,解密

    群聊 from flask import Flask, request, render_templatefrom geventwebsocket.handler import WebSocketHan ...

  6. android 开发,视频群聊引发短信异常

    说到 NDK 开发,其实是为了有些时候为了项目需求需要调用底层的一些 C/C++ 的一些东西:另外就是为了效率更加高些. 但是很多时候能不用就不用:这个是啥原因?个人感觉有些时候是觉得麻烦,首先要配置 ...

  7. 【C/C++开发】值得学习的C语言开源项目

    值得学习的C语言开源项目 - 1. Webbench Webbench是一个在Linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...

  8. Android开发:为什么我们从来不去感谢开源项目维护者?

    今天我想谈一谈,为什么我们很少去感谢开源项目维护者: 一.这样的项目我也可以做啊 “蛤?这项目对我来说也太简单了吧.” “我一周之内就能做一个更好的版本出来.” 确实,很多人都可以在 Hackatho ...

  9. iOS开发资源:推送通知相关开源项目--PushSharp、APNS-PHP以及Pyapns等

    PushSharp  (github) PushSharp是一个实现了由服务器端向移动客户端推送消息的开源C#库,支持 iOS (iPhone/iPad APNS). Android (C2DM/GC ...

  10. Java 网络编程 -- 基于TCP 实现聊天室 群聊 私聊

    分析: 聊天室需要多个客户端和一个服务端. 服务端负责转发消息. 客户端可以发送消息.接收消息. 消息分类: 群聊消息:发送除自己外所有人 私聊消息:只发送@的人 系统消息:根据情况分只发送个人和其他 ...

随机推荐

  1. Oracle 取Group By 第一条

    select *from (select emp.*,row_number() over(partition by deptno order by rownum) cn from emp)where ...

  2. Windows10电源选项:睡眠、休眠、启用快速启动

    参考链接: http://www.dnpz.net/diannaozhishi/2223.html http://www.cfan.com.cn/2018/0118/130151.shtml 在介绍w ...

  3. LP两阶段法(一阶段)

    \begin{equation}\begin{aligned}\min \quad & z=\mathbf{c}^{T} \mathbf{x} \\\text { s.t. } & \ ...

  4. vlan概述

    一.vlan是什么? vlan顾名思义就是虚拟局域网Virtual Local Area Network,为什么要划分vlan?划分vlan可以控制广播,增强网络安全性,简化网络管理. 二.vlan的 ...

  5. 初认Spring

    官网地址:https://spring.io/ Spring Framework的系统架构 1.Core Contiainer:核心容器 2.AOP:面向切片编程 3.Aspects:AOP思想实现 ...

  6. Mathematica处理若干个点电荷的电位电场的一个程序包

    来自 Mathematica for Theoretical Physics Electrodynamics, Quantum Mechanics, General Relativity and Fr ...

  7. GUI编程 --2

    GUI编程 --2 2.4 事件监听 按钮的使用. package com.ssl.lesson02; import java.awt.*; import java.awt.event.ActionE ...

  8. 【JavaScript快速排序算法】不同版本原理分析

    说明 快速排序(QuickSort),又称分区交换排序(partition-exchange sort),简称快排.快排是一种通过基准划分区块,再不断交换左右项的排序方式,其采用了分治法,减少了交换的 ...

  9. CSS in JS (JSS)

    JSS 是什么 简单来说,一句话概括CSS in JS (JSS),就是"行内样式"(inline style)和"行内脚本"(inline script). ...

  10. JS一切皆对象理解

    对象都是通过函数创建的 function Fn() { this.name = '王福朋'; this.year = 1988; } var fn1 = new Fn(); fn1是个对象,它是由函数 ...