前言
大家新年快乐!
新的一年第一篇技术文章希望开个好头,所以元旦三天我也没怎么闲着,希望给大家带来一篇比较感兴趣的干货内容。
本文较长,高能预警;带好瓜子板凳。



于是在之前的基础上我完善了一些内容,先来看看这个项目的介绍吧:
CIM(CROSS-IM) 一款面向开发者的 IM(即时通讯)系统;同时提供了一些组件帮助开发者构建一款属于自己可水平扩展的 IM 。
借助 CIM 你可以实现以下需求:
IM即时通讯系统。- 适用于
APP的消息推送中间件。 IOT海量连接场景中的消息透传中间件。
完整源码托管在 GitHub : https://github.com/crossoverJie/cim
演示
本次主要涉及到 IM 即时通讯,所以特地录了两段视频演示(群聊、私聊)。
点击下方链接可以查看视频版 Demo。
| Bilibili |
|---|
| 群聊 私聊 |
![]() |
也在公网部署了一套演示环境,想要试一试的可以联系我加入内测群获取账号一起尬聊😋。
架构设计
下面来看看具体的架构设计。

CIM中的各个组件均采用SpringBoot构建。- 采用
Netty + Google Protocol Buffer构建底层通信。 Redis存放各个客户端的路由信息、账号信息、在线状态等。Zookeeper用于IM-server服务的注册与发现。
整体主要由以下模块组成:
cim-server
IM 服务端;用于接收 client连接、消息透传、消息推送等功能。
支持集群部署。
cim-forward-route
消息路由服务器;用于处理消息路由、消息转发、用户登录、用户下线以及一些运营工具(获取在线用户数等)。
cim-client
IM 客户端;给用户使用的消息终端,一个命令即可启动并向其他人发起通讯(群聊、私聊);同时内置了一些常用命令方便使用。
流程图
整体的流程也比较简单,流程图如下:

- 客户端向
route发起登录。 - 登录成功从
Zookeeper中选择可用IM-server返回给客户端,并保存登录、路由信息到Redis。 - 客户端向


