代码拉取完成,页面将自动刷新
CIM(CROSS-IM)
一款面向开发者的 IM(即时通讯)
系统;同时提供了一些组件帮助开发者构建一款属于自己可水平扩展的 IM
。
借助 CIM
你可以实现以下需求:
IM
即时通讯系统。APP
的消息推送中间件。IOT
海量连接场景中的消息透传中间件。我有在公网部署了一套演示环境,想要体验的可以联系我加入内测群获取账号。
点击下方链接可以查看视频版 Demo。
YouTube | Bilibili |
---|---|
群聊 私聊 | 群聊 私聊 |
IM
服务端;用于接收 client
连接、消息透传、消息推送等功能。
支持集群部署。
消息路由服务器;用于处理消息路由、消息转发、用户登录、用户下线以及一些运营工具(获取在线用户数等)。
IM
客户端;给用户使用的消息终端,一个命令即可启动并向其他人发起通讯(群聊、私聊)。
Google Protocol Buffer
高效编解码。cim-forward-route
)服务自身是无状态,可用 Nginx
代理支持高可用。CIM
中的各个组件均采用 SpringBoot
构建。Netty
构建底层通信。Redis
存放各个客户端的路由信息、账号信息、在线状态等。Zookeeper
用于 IM-server
服务的注册与发现。route
发起登录。Zookeeper
中选择可用 IM-server
返回给客户端,并保存登录、路由信息到 Redis
。IM-server
发起长连接,成功后保持心跳。route
清除状态信息。首先需要安装 Zookeeper、Redis
并保证网络通畅。
git clone https://github.com/crossoverJie/cim.git
cd cim
mvn -Dmaven.test.skip=true clean package
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 &
cim-server 集群部署同理,只要保证 Zookeeper 地址相同即可。
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 &
cim-forward-route 本身就是无状态,可以部署多台;使用 Nginx 代理即可。
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.group.route.request.url=http://路由服务器:8083/groupRoute --cim.server.route.request.url=http://路由服务器:8083/login
如上图,启动两个客户端可以互相通信即可。
命令 | 描述 |
---|---|
:q |
退出客户端 |
:olu |
获取所有在线用户信息 |
:all |
获取所有命令 |
: |
更多命令正在开发中。。 |
群聊只需要在控制台里输入消息回车后即可发送,同时所有在线客户端都可收到消息。
私聊首先需要知道对方的 userID
才能进行。
输入命令 :olu
可列出所有在线用户。
接着使用 userId;;消息内容
的格式即可发送私聊消息。
同时另一个账号是收不到消息的。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。