前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于 Netty 的即时消息通信框架,给你带来全新的沉浸式体验

基于 Netty 的即时消息通信框架,给你带来全新的沉浸式体验

作者头像
永恒君
发布2022-12-06 15:35:41
7830
发布2022-12-06 15:35:41
举报
文章被收录于专栏:开源小分队开源小分队

一、背景

大家好,我是爱撸码的开源大叔!前两天开源小妹写了篇文章,反响还不错,就开始跟我炫耀了,那我必是不能落后的。

目前公司项目有许多需要发送即时消息的场景,之前一直采用的是传统的 websocket 连接,但是它存在掉线严重,不可重连,不支持高并发等缺点,在这样的背景下,急需一款成熟稳定的即时通讯系统。此时发现了一个优秀的开源框架-- CIM。CIM 是一套基于 Netty 框架的即时消息推送系统,目前 CIM 支持 websocket,android,ios,桌面应用,系统应用等多端接入,可应用于移动应用,物联网,智能家居,嵌入式开发,桌面应用,WEB 应用以及后台系统之间的即时消息服务。 下面我来给大家介绍一下这个好用的开源框架吧。(写这篇文章还有一个目的:开源大叔不能输给开源小妹!)

二、快速入门

  1. 下载源代码,原代码地址为:。。。(我也跟小妹学一手卖关子),下载完成之后直接使用maven编译即可。
  2. 源代码目录结构如下:
  1. 无需进行数据库的初始化,若想要将用户信息保存持久化可以 CIMSession 用户连接信息保存到 Redis 或者 MySQL 中,本次示例不做数据库相关操作。
  1. 部署 CIM 服务端项目 第一步:修改配置文件 由于无需连接数据库,因此没有什么需要修改的地方

第二步:直接启动项目 启动还是非常便捷的,没有繁琐的配置 可以看到 websocket 监听的端口为34566,这也是一会我们要使用的端口。

第三步:打开管理界面 界面地址为:http://127.0.0.1:8080/

因为我们还没有登录客户端,因此这里还没有在线用户,稍后我们登录客户端后再来查看。 至此 CIM 服务端已部署启动完成。

  1. CIM 的 web 客户端启动 第一步:找到客户端实例项目 我们本次主要演示 web 客户端通过 websocket 的连接

第二步:修改配置文件 web 端的配置文件主要在:cim.web.sdk.js

第三步:启动 web 客户端 启动很简单,直接打开 index.html 文件即可

效果如下

第四步:登录 CIM 我们任意输入一个用户名,点击“登录”即可

登录成功

我们再来看看服务端的在线用户列表,已经有我们登录的用户,点击“发送消息”按钮即可发送消息

  1. 发送消息

至此,CIM 的快速入门已经完成。

三、大致流程

  1. 首先启动服务器端项目,此时也相当于启动了 websocket 的服务端,等待用户连接;
  2. 打开 web 客户端页面,登录用户,连接 websocket;
  3. 打开控制台页面,选择已登录的用户,发送消息即可。

可以看到,系统的整体流程并不复杂,还是很容易理解和上手的。

四、框架优势

  1. 该框架是基于主流的 Netty 框架(Netty 的强大已无需多言了),能够保证稳定高效的连接,而且断线重连机制支持的也很好
  2. 易于扩展和使用,并完美支持集群部署支持海量链接,目前支持 websocket,android,ios,桌面应用,系统应用等多端接入,可应用于移动应用,物联网,智能家居,嵌入式开发,桌面应用,WEB 应用即时消服务。
  3. 用时7年基于 CIM 的项目已经运行在全国各个地方,包括上市公司,各地政务系统,警务系统等服务于上百家客户。
  4. 该框架是基于当前主流的 springboot,并且全面拥抱 protobuf,替换 json 序列化方式,更加高效
  5. 从我自身使用体验来讲,该框架已经很好的解决了我司项目之前掉线严重,不可重连,不支持高并发等缺点

五、总结

目前该框架已集成到我司的项目当中,而且已经稳定运行一段时间,很好的解决了之前消息推送的痛点,得到了其他同事的一致好评。

另外,了解该项目之前建议先了解下 Netty 的相关原理,能够方便你对于该项目源码的改编,以适用你自己项目的需求。我也将之前在公司给同事培训 Netty 的脑图整理了一下,需要的小伙伴可以去下载一下。(回复的关键字稍后会在文末贴出)

对于用户信息的持久化,可以使用Redis数据库,方便又高效。

最后,假如你当前也有即时消息推送相关的需求,这个完善的消息推送框架还是很值得你去考虑的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源小分队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景
  • 二、快速入门
  • 三、大致流程
  • 四、框架优势
  • 五、总结
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档