目录
- 背景
- 过程
- 1、下载代码
- 2、进行配置
- 3、直接启动项目
- 4、打开管理界面
- 5、启动web客户端实例项目
- 6、发送消息
- 项目使用
- 总结
背景
公司项目有许多需要发送即时消息的场景,之前一直采用的是传统的websocket连接,它会存在掉线严重,不可重连,不支持高并发等缺点,在这样的背景下,急需一款成熟稳定的即时通讯系统。此时发现了一个优秀的开源框架–CIM。CIM是一套基于Netty框架下的推送系统,目前CIM支持websocket,android,ios,桌面应用,系统应用等多端接入支持,可应用于移动应用,物联网,智能家居,嵌入式开发,桌面应用,WEB应用以及后台系统之间的即时消服务。开发者可沉浸于业务开发,不用关心消息通道链接,消息编解码协议等繁杂处理。CIM仅提供了消息推送核心功能,和各个客户端的集成示例,并无任何业务功能,需要使用者自行在此基础上做自己的业务,因此需要你有一定的开发经验。
过程
1、下载代码
https://gitee.com/farsunset/cim.git
2、进行配置
初始化的时候需要连接数据库和redis,所以首先进行配置。
3、直接启动项目
4、打开管理界面
5、启动web客户端实例项目
6、发送消息
到这里cim的基本使用方式已经完成。
项目使用
在教师推课切换颗粒的时候,学生应该同步上课进程,和老师端的颗粒保持一致,这需要老师在切颗粒的时候使用cim通知所有在课里边的学生切换颗粒。
我们可以看到上边当我使用cim发消息的时候是调用了一个接口,那在项目中我们使用的时候可以使用restTemplate 接入这个所谓的第三方平台cim的接口,实现发送消息的结果。
这里和绩效那里接入第三方平台xxljob是类似的,都是借助RestTemplateBuilder 实现响应接口的效果。
总结
该框架是基于主流的Netty框架(Netty的强大已无需多言了),能够保证稳定高效的连接,而且断线重连机制支持的也很好。
易于扩展和使用,并完美支持集群部署支持海量链接,目前支持websocket,android,ios,桌面应用,系统应用等多端接入持,可应用于移动应用,物联网,智能家居,嵌入式开发,桌面应用,WEB应用即时消服务。
用时7年 基于CIM的项目已经运行在全国各个地方,包括上市公司,各地政务系统,警务系统等服务于上百家客户。
该框架是基于当前主流的springboot,并且全面拥抱protobuf,替换json序列化方式,更加高效。
从我自身使用体验来讲,该框架已经很好的解决了我司项目之前掉线严重,不可重连,不支持高并发等缺点。