即时通讯app开发-混合开发app怎么开发
大家平时工作中用什么通讯工具进行交流呢?微信?QQ?但是有不少单位为了防止员工摸鱼,不允许员工使用上述工具,但一些能给大家用的本地通讯工具呢又不怎么好用即时通讯app开发,所以今天TJ君来和大家分享一个适用于开发者的分布式即时通讯系统,cross IM,简称 CIM
CIM总的来说,是一款面向开发者的即时通讯系统,它可以提供一些组件帮助开发者构建成一款属于自己的即时通讯工具。
目前已经实现的功能有:
在开发计划中的功能有:
整体的系统架构如下图所示:
其中,各个组件均采用SpringBoot构建,底层通信采用Netty构建,而存放各个客户端的路由信息、账号信息、在线状态的则是Redis即时通讯app开发,最后使用了Zookeeper进行IM-server的注册与发现。
其整体功能流程可以这样理解:
首先客户端向route发起登录。登陆成功后,从Zookeeper中选择可用的IM-server返回给客户端,并保存登录、路由信息到Redis。然后由 客户端向IM-server发起长连接请求,连同后保持活跃。最后当客户端下线时通过route清除状态信息。
快速启动四步骤
1、安装 Zookeeper、Redis 并保证网络通畅。
cd cim
mvn -Dmaven.test.skip=true clean package
2、部署 IM-server(cim-server)
cim-server 集群部署同理,只要保证 Zookeeper 地址相同即可。
cp /cim/cim-server/target/cim-server-1.0.0-SNAPSHOT.jar /xx/work/server0/
cd /xx/work/server0/
nohup java -jar /root/work/server0/cim-server-1.0.0-SNAPSHOT.jar --cim.server.port=9000 --app.zk.addr=zk地址 > /root/work/server0/log.file 2>&1 &
3、部署路由服务器(cim-forward-route)
cim-forward-route 本身就是无状态,可以部署多台;使用 Nginx 代理即可。
cp /cim/cim-server/cim-forward-route/target/cim-forward-route-1.0.0-SNAPSHOT.jar /xx/work/route0/
cd /xx/work/route0/
nohup java -jar /root/work/route0/cim-forward-route-1.0.0-SNAPSHOT.jar --app.zk.addr=zk地址 --spring.redis.host=redis地址 --spring.redis.port=6379 > /root/work/route/log.file 2>&1 &
4、启动客户端
启动两个客户端就可以互相通信。
cp /cim/cim-client/target/cim-client-1.0.0-SNAPSHOT.jar /xx/work/route0/
cd /xx/work/route0/
java -jar cim-client-1.0.0-SNAPSHOT.jar --server.port=8084 --cim.user.id=唯一客户端ID --cim.user.userName=用户名 --cim.route.url=http://路由服务器:8083/
客户端有一些常用的内置命令,例如:
:q!退出客户端
:olu获取所有在线用户信息
:all获取所有命令
:q [option]【:q 关键字】查询聊天记录
:ai开启 AI 模式
:qai关闭 AI 模式
:pu模糊匹配用户
:info获取客户端信息
:emoji [option]查询表情包 [option:页码]
:delay [msg] [delayTime]发送延时消息
让我们一起看下一些实际聊天交流的效果:
如果觉得不错的小伙伴,可以来试试哦!项目地址如下: