基于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

 


访问 http://localhost:8080

4.启动uniapp-h5 将im-uniapp目录导入HBuilderX,点击菜单"运行"->"开发环境-h5" 访问 http://localhost:5173

8.接入消息推送

极客IM对消息推送模块进行了剥离和封装, 如果您不关心极客IM的业务功能,只需要一个可以将消息推送至前端的服务,则只需要启动im-server即可 然后参考以下文档进行接入:
https://www.zsgeek.cn/#/knowledgeBase/detail/18?id=91

界面截图

私聊: 

输入图片说明

群聊: 

输入图片说明


群通话: 

输入图片说明

好友列表: 

输入图片说明

群列表: 

输入图片说明

移动端APP: 

输入图片说明


输入图片说明


 


posted on 2025-04-13 10:05  woainiya  阅读(48)  评论(0)    收藏  举报