开篇
电商平台最不能缺的就是即时通讯,例如通知类下发,客服聊天等,今天就来搞一个开源的即时通讯耍耍。如对文章不感兴趣可直接跳至文章末尾,有获取开源gitee上链接的方法和我自己改的压缩包的地址。但文章内容是要过一遍的,redis记录聊天会话相关的,源码没有,我自己改的。
本文一如既往的实战,这次来搭建的开源系统,是即时通讯,开源的部分有限,所以作者我抽空给改了改,拿去之后可以后台可以直接使用。观看的同学需有一定的工作基础。如果只对源码感兴趣,看完简介后请跳至文章末尾,如果对搭建过程学习感兴趣赶紧关注、转发、收藏吧。毕竟源码没什卵么用,怎么用才是重点。源码好找,调试不易,请君珍惜。
项目简介
该项目是一套基于apache mina 和Netty框架下的推送系统,我们平常使用第三方的推送SDK,如极光推送,百度推送,小米推送,以及腾讯信鸽等来支撑自己的移动端的业务,那么有没有想过自己也开发一个推送系统?!!或许有一些用户自己实现即时通讯系统的需求,那么该套系统可是提供了一个解决方案或者思路,目前该系统支撑 websocket,android,ios,桌面应用,系统应用等多端接入支持。而且我已经把redis整合进去了,有没有价值,值不值得收藏,自己看文章!!
项目架构
即时通讯聊天的架构都相对较简单,一般都是服务端+客户端,能实现用户A到用户B的聊天。含金量在于看看支不支持集群扩展。当然核心在于redis存储各个连接信息。
聊天架构
项目主要模块
项目分为,服务器端,和客户端,服务端是netty 整合websocket 和redis,客户端形式多种多样,都是调用服务端的,本篇就不重点介绍了,但后面源码我把我写的demo给贴出来。
核心调试部分
环境:16G内存的电脑、JDK1.8以上,Maven3.6以上,开发工具Idea,redis 3以上版本。
1、一如既往的导入项目从开源gitee上的地址,如下图操作,如果网快的画基本几分钟就好了,如果网速慢,那就等等吧。
git导入项目
导入后截图
2、修改redis配置,注意截图里的红色,pom.xml 里面修改maven依赖,由于原开源项目没有redis相关代码,故这一部分是我整理加上的!这里也是重点。不然你的聊天可支持不了集群!!
3、加入redis相关配置,由于源码里面的东西没必要贴出来,截图了这里。需要源码的到文章末尾吧。包含RedisConfig,RedisUtils,以及相关配置。
4、这里我们实现一个,nginx做负载均衡和反向代理的相关配置,nginx软件自己去下载吧。修改nginx.conf,如下
nginx相关配置
5、把静态文件放入nginx下的html下,然后运行nginx。并启动后台。
后台服务
6、至此搞完了,来看看效果吧!!!
A、访问服务端页面 http://localhost:8080 注意是8080 ,这里只能给用户推送信息不能发聊天信息。
B、访问客户端页面 http://localhost/cim-client-web/
C、随便填写一个用户,没有的话后台会自动注册到redis的。例如我填写的是test;和test2;当然本文重点不是前端页面,只是简单的在源代码的基础上加了聊天。因为源代码只有推送,没有聊天!!
D、看看redis里的信息 cimsessions 这个key是我加上去的,源代码里也没有,自己可以该成自己的,看自己如何扩展了。
结语
此套开源的即时通讯系统,可以改改成推送的,也可以改成聊天的,后端改改可以拿来直接使用,重点不在前端,但android 和ios还有web都支持,自己看代码中的例子吧,值不值得收藏,自己先看看文章,觉得可以收藏一下,慢慢看。
推荐阅读:
牛皮了,马士兵老师全网首播阿里P8级技术、实现大型淘宝实战落
面试美团被JVM惨虐?阿里P9架构师用500分钟把JVM从入门讲到实战#合集
清华启蒙架构师马士兵针对应届生到开发十年的Java程序员做职业把脉