基于java和vue的即时通讯源码(极客IM)
源码获取地址 :https://www.zsgeek.cn/#/knowledgeBase/detail/18?id=103
1. 特点
-
极客IM是一个仿微信实现的开源聊天软件,支持内网部署,不依赖任何收费SDK或组件
-
支持web端和移动端同时在线以及消息同步
-
后端服务支持集群化部署,具有良好的横向扩展能力
-
消息推送功能已进行SDK封装,可快速接入企业项目
2. 合适人群
如果您是以下人群之一,那么极客IM将会非常适合您:
-
企业中的项目需要开发IM模块,希望快速整合极客IM的部分功能
-
对IM系统比较感兴趣,想学习如何独立编写一个优雅且高性能的IM系统
3. 前置技能
尽管作者已经十分努力的降低极客IM的使用门槛,但是在学习极客IM前,还是需要您已经掌握以下技能:
后端:Springboot、Mybatis-plus、Netty、Mysql、Redis
前端:Vue、Uniapp
4. 功能展示
5.项目结构
| 模块 | 功能 |
|---|---|
| im-platform | 业务平台服务,负责处理来自用户的业务请求(http) |
| im-server | 消息推送服务,不依赖业务,负责将消息推送给用户(ws) |
| im-client | 消息推送sdk, 其他服务可集成此sdk与im-server通信 |
| im-common | 公共包,后端服务均依赖此包 |
| im-web | web页面 |
| im-uniapp | uniapp页面,可打包成app、h5、微信小程序 |
| im-webview-private-rtc | uniapp单人音视频webview组件源码 |
| im-webview-group-rtc | uniapp多人音视频webview组件源码 |
6.消息推送方案
当消息的发送者和接收者连的不是同一个server时,消息是无法直接推送的,所以我们设计出了能够支持跨节点推送的方案:
-
利用了redis的list数据实现消息推送,其中key为im:unread:${serverid},每个key的数据可以看做一个queue,每个im-server根据自身的id只消费属于自己的queue
-
redis记录了每个用户的websocket连接的是哪个im-server,当用户发送消息时,im-platform将根据所连接的im-server的id,决定将消息推向哪个queue
7.本地启动
1.安装运行环境
-
安装node:v18.19.0
-
安装jdk:17
-
安装maven:3.9.6
-
安装mysql:8.0,账号密码分别为root/root,创建名为im_platform的数据库,运行db/im_platfrom.sql脚本
-
安装redis:6.2
-
安装minio:RELEASE.2024-xx,使用默认账号、密码、端口
2.启动后端服务
mvn clean package java -jar ./im-platform/target/im-platform.jar java -jar ./im-server/target/im-server.jar
3.启动前端web
cd im-web npm install npm run serve
访问
4.启动uniapp-h5 将im-uniapp目录导入HBuilderX,点击菜单"运行"->"开发环境-h5" 访问
8.接入消息推送
极客IM对消息推送模块进行了剥离和封装, 如果您不关心极客IM的业务功能,只需要一个可以将消息推送至前端的服务,则只需要启动im-server即可 然后参考以下文档进行接入:
界面截图
私聊:
群聊:
群通话:
好友列表:
群列表:
移动端APP:








浙公网安备 33010602011771号