# 盒子IM
**Repository Path**: bluexsx/box-im
## Basic Information
- **Project Name**: 盒子IM
- **Description**: 盒子IM是一个类似微信的聊天系统。后端采用springboot+netty实现,web端使用vue,移动端使用uniapp,支持私聊、群聊、离线消息、发送图片、文件、语音、emoji表情、视频聊天等功能。
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://www.boximchat.com
- **GVP Project**: No
## Statistics
- **Stars**: 4094
- **Forks**: 1400
- **Created**: 2022-10-27
- **Last Updated**: 2026-09-10
## Categories & Tags
**Categories**: im
**Tags**: IM, 聊天, SpringBoot, Netty, Vue
## README
# 盒子IM

[](https://gitee.com/bluexsx/box-im)
[](https://github.com/bluexsx/box-im)
盒子IM 是一个类似微信效果的即时通讯系统,不依赖任何第三方收费组件。
- 支持私聊、群聊、离线消息、语音 / 图片 / 文件、已读未读、群 @ 等功能
- 支持音视频通话,基于原生 WebRTC 实现,不依赖收费第三方 SDK
- uniapp 端兼容 App、H5、微信小程序,可与 Web 端同时在线,支持消息同步
- 后端采用 Spring Boot + Netty,网页端用 Vue,移动端用 uniapp
- 服务器支持集群化部署,具备良好的横向扩展能力
技术文档:https://www.yuque.com/u1475064/mufu2a
## 管理后台
管理后台为**独立仓库**,提供用户、群组、消息、敏感词等后台能力。建议先完成本仓库业务服务的启动,再按后台仓库文档搭建管理端。
- Gitee:https://gitee.com/bluexsx/box-im-admin
- GitHub:https://github.com/bluexsx/box-im-admin
## 近期重大更新
- 网页端技术框架升级至 Vue3 + Vite + TS
- 正式兼容纯血华为鸿蒙 App
- 本地消息重构,采用 IndexedDB / SQLite 存储本地消息
## 在线体验
| 终端 | 说明 |
|--------|------------------------------------------------------------------------------------------------------|
| Web | https://www.boximchat.com |
| 安卓 App | https://www.boximchat.com/download/boxim.apk |
| iOS App | 已上架 App Store,搜索「盒子IM」即可下载 |
| 微信小程序 | 已上架,搜索「盒子IM」即可进入 |
| H5 | https://www.boximchat.com/h5/
 |
**体验账号:** 张三 / Aa888999 、李四 / Aa888999
**说明:**
1. **请勿利用测试账号辱骂他人、发布低俗内容**
2. 为防止有人利用演示环境进行非法用途,演示环境注册通道已关闭
3. 演示环境部署的是商业版本,与开源版本功能存在一定差异,具体请参考:
https://www.yuque.com/u1475064/imk5n2/qtezcg32q1d0dr29#SbvXq
## 性能测试
- 压测模拟器:https://gitee.com/bluexsx/box-im-simulator
- 性能测试文档:https://www.yuque.com/u1475064/mufu2a/yhcxi9i6yqbkmm54
## 付费服务
- 商业版:https://www.yuque.com/u1475064/imk5n2/qtezcg32q1d0dr29
- 代部署:https://www.yuque.com/u1475064/imk5n2/qgq5cvgmavallqnl
## 项目结构
| 模块 | 功能 |
|------|------|
| im-platform | 业务平台服务,负责处理来自用户的业务请求(HTTP) |
| im-server | 消息推送服务,不依赖业务,负责将消息推送给用户(WS) |
| im-client | 消息推送 SDK,其他服务可集成此 SDK 与 im-server 通信 |
| im-common | 公共包,后端服务均依赖此包 |
| im-web | Web 页面 |
| im-uniapp | uniapp 页面,可打包成 App、H5、微信小程序 |
## 消息推送方案
当消息的发送者和接收者连的不是同一个 server 时,消息无法直接推送,因此设计了支持跨节点推送的方案:

- 利用 Redis 的 List 实现消息推送,其中 key 为 `im:message:private:${serverId}`,每个 key 可视为一个 queue,每个 im-server 根据自身 id 只消费属于自己的 queue
- Redis 记录了每个用户的 WS 连接所在的 im-server;用户发送消息时,im-platform 根据其所连接的 im-server id,决定将消息推向哪个 queue
## 本地启动
### 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. 启动后端服务
```bash
mvn clean package
java -jar ./im-platform/target/im-platform.jar
java -jar ./im-server/target/im-server.jar
```
### 3. 启动前端 Web
```bash
cd im-web
npm install
npm run serve
```
访问 http://localhost:8080
### 4. 启动 uniapp H5
将 `im-uniapp` 目录导入 HBuilderX,点击菜单「运行」→「开发环境-h5」
访问 http://localhost:5173
## 界面截图
**私聊:**

**群聊:**

**群通话(商业版):**

**好友列表:**

**群列表:**

**移动端 App:**


## 加入交流群
从 2026-01-01 开始,我们正式开通了企业微信群(原来的 QQ 群不再开放):

欢迎进群与小伙们一起交流,**申请加群前请务必先 star 哦**
## 点下 star 吧
如果项目对您有帮助,请点亮右上方的 star,支持一下作者吧!
## 说明几点
1. 开源版允许用于商业用途,且不收费,**但切记不要用于任何非法用途**,本软件作者不会为此承担任何责任
2. 基于本系统二次开发后再次开源的项目,请注明引用出处,以避免引发不必要的误会
3. 为方便管理,要 PR 的同学请将代码提交到 `v_4.0.0` 分支,作者会在功能上线时合并到 `master` 分支