- 盒子IM是一个仿微信实现的网页版聊天软件,不依赖任何第三方收费组件。
- 支持私聊、群聊、离线消息、发送语音、图片、文件、已读未读、群@等功能
- 支持音视频通话,基于原生webrtc实现,不依赖收费第三方sdk
- uniapp端兼容app、h5、微信小程序,可与web端同时在线,支持消息同步
- 后端采用springboot+netty实现,网页端用vue,移动端用uniapp
- 服务器支持集群化部署,具有良好的横向扩展能力
详细文档: https://www.yuque.com/u1475064/mufu2a 后台管理: https://gitee.com/bluexsx/box-im-admin
- 本地消息重构,采用本地数据库(indexedDb、sqlite)管理本地消息
- 离线消息优化,当离线消息大于1万条时,自动降级为按需分页拉取,降低拉取压力
- 好友、群聊、群成员信息存储至本地数据库,每次登录仅做增量拉取
- 好友在线状态由定时轮训改为实时推送
web端: https://www.boxim.online
安卓app: https://rs.boxim.online/download/boxim.apk
ios-app: 已上架至app store,搜索"盒子IM",下载安装即可
小程序: 已上架至微信小程序,搜索“盒子IM”进入即可
h5: https://www.boxim.online/h5/ ,或扫码:
体验账号:张三/Aa123123 李四/Aa123123 TT01~TT09/Aa123123
说明:
1.请勿利用测试账号辱骂他人、发布低俗内容,否则将直接对您的IP进行封禁
2.为防止有人利用演示环境进行非法用途,演示环境注册通道已关闭
3.演示环境部署的是商业版本,与开源版本功能存在一定差异,具体请参考:
https://www.yuque.com/u1475064/imk5n2/qtezcg32q1d0dr29#SbvXq
商业版: 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:unread:${serverid},每个key的数据可以看做一个queue,每个im-server根据自身的id只消费属于自己的queue
- redis记录了每个用户的websocket连接的是哪个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.启动后端服务
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" 访问 http://localhost:5173
从2026-01-01开始,我们正式开通了企业微信群(原来的QQ群不再开放):

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







