- 时间:2022-09-07 01:44 编辑: 来源: 阅读:296
- 扫一扫,手机访问
摘要:基于SpringBoot+Netty的分布式开源即时通讯系统项目GitHub Star 68k
[免费源码]
最近公司在开发中需要用到IM系统,所以自己开发需要更多的时间和精力。 所以我们考虑在开源项目的基础上进行二次开发。在比较了许多开源方案后,我们选择了CIM[1]。 项目简介CIM(CROSS-IM)项目是一个面向开发者的即时通讯系统。项目基于流行的SpringBoot(项目依托的Spring Boot版本是1.5.x,可以自行更新到最新的稳定版本),网络通信基于Netty。 Redis用于存储客户端的账号/状态(在线)/路由信息,Zookeeper用于完成服务间的发现。 通过CIM(CROSS-IM),你可以设计自己的水平可扩展的IM。 项目地址:crossoverJie/cim[2]功能列表群聊私聊记录查询AI自动聊天(智能模式价值2亿)延迟消息客户端自动重新连接服务器自动拒绝离线客户端支持级别扩展/协议缓冲协议项目截图。群聊:imageimage私聊:图像项目技术栈Spring BootZookeeperNettyRedis...你可以看到项目中用到的所有技术都是共性技术,也是我们需要掌握的能力。 而且crossoverJie大哥写的代码也挺漂亮的,值得学习。 让我们简单看一下系统的整体架构!系统架构图我们来看看几个关键的实现。 简单代码分析群聊的使用非常简单,只要你想在控制台输入一条消息,按回车键即可。 这时会调用route的群聊界面。 镜像的效果就是一个客户端发一条消息,其他所有客户端都能收到!这个过程必须是用户向服务器发送消息。服务器收到后,按照上面的细节遍历SessionSocketHolder中的所有通道,然后发送消息。 做单台服务器还可以,现在是集群设计。 因此,根据前面的轮询算法,所有客户机将被分配到不同的服务器实例。 Image然后逐个调用每个客户端所在的服务器的HTTP接口来推送消息。 图像私聊也一样,但前提是你需要触发关键词;使用用户id;;内容的格式只会给一个客户发一条消息,所以一般要先用:olu命令才能得到,方便在线客户使用。 图片在线客户查看这是一个辅助界面,可以查询当前在线的客户信息。 镜像实现也很简单,就是在查询之前保存“客户登录状态”的副本集即可。 postscript CIM[3]的功能包括但不限于此,剩下的功能就等你自己去体验了~有思想的crossoverJie大哥也为这个项目写过很多相关的文章[4],参考了少量他在开发这个项目时遇到的设计过程/问题,也包含了很多大佬的想法。 朋友们要好好利用哦~以下是文章列表:图片按照crossoverjie的思路,这个项目里有很多todo列表。有兴趣的朋友也可以贡献自己的力量,学习后积极参与开源!