简单的go写的websocket协议 im 聊天 服务,流程简单清晰,采用golang编写,flutter im客户端。免费开源哈,随意用

ops/2024/12/19 7:52:25/

mini-im

1、说明:

项目地址:https://github.com/haomiao33/minim

1.1、项目介绍:

简单的go写的im服务,流程简单清晰,大部分接口使用的是http,方便流程控制。login服务目前只是用来做服务端推送消息通知到客户端。本项目采用golang编写,分为login、api、msg-push、online等服务,这些服务都能集群部署和多个实例扩展。用户可以扩充其他协议和服务。

目前打算golang编写im,支持单聊、群聊、推送; 然后客户端目前只打算做个flutter im chat 版本的就行。方便大家集成。

文档放在doc里面了

sql里面是数据库,自己创建一个就行

测试客户端:目前是写到testclient目录里面的,nodejs的

目前有如下服务(每个服务都可以多实例,方便用户量上来扩展和分布式,目前服务注册到consul里面的):

login: 用户登录服务,目前只用来接收服务端下发的消息(主要是消息通知),用户和im的websocket,使用 gnet,后续可以扩展到tcp、udp等,长连接都连接到login服务。不同服务交互使用的grpc,这里面没有写用户认证什么的,大家可以根据自己的业务需求来完成。api: 消息接口服务,采用fiber编写,主要处理客户端的接口请求:消息发送、消息同步、会话管理等等这些。msg-push: 消息推送服务,单聊消息推送online: 在线状态服务,用户在线状态放在这里,内部使用redis存放。login服务

1.2、项目特点:

1、go编写,每个服务都能多实例扩展分布式,无状态。
2、使用gnet高并发库作为底层支持,目前支持websocket、后续可以很轻松扩展到gnet tcp等协议
3、使用fiber作为api接口底层,支持高并发
4、消息表目前支持分表,可以在创建的时候创建n个消息表im_msg_0是默认的
5、协议简单,目前通信通道websocket只来做消息下发通知,其他的都通过api接口实现,稳定简单可靠,扩展性强
6、使用kafka作为消息mq,高负载,后续添加群聊能很好支持
7、有flutter客户端sdk和demo
8、支持离线推送,配套的离线推送anroid和flutter插件,支持(vivo、oppo、华为、小米)(https://github.com/haomiao33/ym_flutter_push)

1、3 项目部署:

查看 部署方法 文件

2、登陆

在这里插入图片描述

3、单聊消息:流程图

3.1、单聊流程图

在这里插入图片描述


http://www.ppmy.cn/ops/143129.html

相关文章

[C++]多态

1. 什么是多态性? 1.定义 多态性是指同一个函数或操作在不同对象上表现出不同的行为。 2.分类 C 中的多态性主要分为两种: 1.编译时多态性(静态多态性): 编译时决定调用哪个函数。通过 函数重载 和 运算符重载 实…

Linux下常用的网络编程函数详解

在网络编程中,我们经常需要处理 IP 地址和端口号等数据,这些数据需要在主机字节序(Host Byte Order)与网络字节序(Network Byte Order)之间进行转换。 什么是字节序? 字节序指的是多字节数据在…

fabric.js

目录 一、在canvas上画简单的图形 二、在canvas上用路径(Path)画不规则图形 三、在canvas上插入图片并设置旋转属性(angle) 四、让元素动起来(animate) 五、图像过滤器(filters)让图片多姿多彩 六、颜色模式(Color)和相互转换(toRgb、toHex) 七、对图形的渐变填充(Gradi…

常用的es操作

前言 我们前面写过ES基础操作和ES高级查询 写的都很细,但是很多时候我们仅仅是忘记具体的某个语法,去那两篇博客查找就很麻烦了,这篇博客就把常用的ES操作进行总结。 常用操作 建索引(建表,不过并没有指定字段名和类…

【Qt】信号、槽

目录 一、信号和槽的基本概念 二、connect函数:关联信号和槽 例子: 三、自定义信号和槽 1.自定义槽函数 2.自定义信号函数 例子: 四、带参的信号和槽 例子: 五、Q_OBJECT宏 六、断开信号和槽的连接 例子: …

Java匿名类和lambda

匿名类 匿名类就是一个语法糖,可以帮我们省略定义类名这一步,直接创建对象,简化代码 匿名类规则: 匿名类必须继承一个父类或实现一个接口,并且最多继承一个父类或实现一个接口。匿名类可以继承父类的方法&#xff0c…

基于python绘制数据表(上)

利用python绘制各种数据图表 绘制柱形图-源码 from openpyxl import Workbook from openpyxl.chart import BarChart, Reference# 创建工作薄 wb Workbook(write_onlyTrue) # 创建工作表 ws wb.create_sheet(月收入)# 准备数据 rows [(月份, 销售额),(1, 23),(2, 43),(3, …

第十章 多表查询

一、概述 我们在前面几个章节讲解SQL语句的时候,涉及到了DQL语句即数据查询语句,但是之前讲解的查询都是单表查询,而本章节我们要学习的则是多表查询操作。多表查询‌是指在数据库查询中涉及多个表的操作,通过连接运算来获取多个…