中国电信|爱了爱了!SpringBoot+Netty分布式即时通讯系统,附源码!

文章图片

文章图片

文章图片

文章图片

文章图片

文章图片

来源:https://mp.weixin.qq.com/s/enXIQrcldKgNNirihlwbOw最近公司开发需要用到 IM 系统 , 自己开发的话需要耗费较多时间和精力 。 于是我们考虑在开源项目的基础上二次开发 , 我们对比了较多开源方案之后 , 选择了CIM[1
。
项目简介
CIM(CROSS-IM)项目是面向开发者的 即时通信 系统 , 项目基于目前比较流行的 SpringBoot 进行构建(项目依赖的Spring Boot 版本为 1.5.x, 可以自行升级到最新稳定版本) , 基于 Netty 进行网络通信 。 利用Redis来存放客户端的账户/状态(是否在线)/路由等信息 , 同时使用Zookeeper来完成服务间的发现 。
通过 CIM(CROSS-IM) 你可以设计一款属于自己可水平扩展的 IM。
功能列表
- 群聊
- 私聊
- 聊天记录查询
- AI 自动聊天(价值两亿的智能模式哦)
- 延时消息
- 客户端自动重连
- 服务端自动剔除离线客户端
- 支持水平扩容/缩容
- 支持Protocol Buffer协议
群聊:
- Spring Boot
- Zookeeper
- Netty
- Redis
- ...
先来简单看一下系统整体架构!
系统架构
代码简单分析
群聊
群聊的使用非常简单 , 只需要在控制台输入消息回车即可 。
这时会去调用 route 的群聊接口 。
流程肯定是客户端发送一条消息到服务端 , 服务端收到后在上文介绍的 SessionSocketHolder 中遍历所有 Channel(通道)然后下发消息即可 。
服务端是单机倒也可以 , 但现在是集群设计 。 所以所有的客户端会根据之前的轮询算法分配到不同的 服务端实例中 。
私聊也是同理 , 但前提是需要触发关键字;使用 userId;;消息内容 这样的格式才会给某个用户发送消息 , 所以一般都需要先使用 :olu 命令获取所以在线用户才方便使用 。
这是一个辅助接口 , 可以查询出当前在线用户信息 。
后记
CIM[3
的功能包含但不限于此 , 其他功能就等你自己去体验喽~
体贴的crossoverJie 大佬还为该项目写了很多相关的文章[4
, 分享了一些他开发这个项目的设计流程/遇到的问题 , 包含了很多大佬的思考 。 小伙伴们可要好好利用起来哦~
以下是文章列表:
【中国电信|爱了爱了!SpringBoot+Netty分布式即时通讯系统,附源码!】项目地址以及源码感兴趣的劳烦关注我私信回复“666”获取哦
推荐阅读
- 兔子|兔兔这么可爱,为什么要吃屎?
- 脑梗死|脑梗死和喝酒有没有关系呢?爱喝酒的朋友,应该看看
- 扇贝最好吃的做法,适合冬日里吃,做法简单好吃不腻,家人超爱吃
- 爱吃南瓜饼的收藏,外酥里嫩,香甜软糯,饭桌上必备,做法超简单
- 荤素搭配的酱爆鸡丁,鲜香肉嫩有营养,孩子爱吃的美味菜肴
- 猴面包树|这种树“能吃能喝还能住”,养活无数非洲人,引进中国后画风变了
- 早餐的新吃法,“透明饺子”简单好学,孩子看了都超级爱吃!
- 全家都爱此甜点,香甜酥软易于消化,少油少糖做法简单更解馋
- 孩子特爱吃的煎饼,颜色鲜艳,营养美味,2分钟出锅,看到就想吃
- 特爱吃的几道家常菜,轻松拿下,让你秒变大厨!好吃又下饭营养
