ARTICLE · 1338087
项目源码|盒子IM 仿微信即时通讯系统|Spring Boot + Netty + Vue 3
项目源码|盒子IM 仿微信即时通讯系统|Spring Boot + Netty + Vue 3
看这里:中间是登录卡片;账号已填 
看这里:注册页与登录同风格,填用户名、密码、昵称即可开号。 
看这里:左侧导航是消息/联系人/群聊/设置;中间列表已有私聊与群聊两条会话。 
看这里:联系人页已出现「测试乙」,说明互加好友成功。 
看这里:右侧气泡是私聊文字;下面蓝色块是本机上传的图片消息。 
看这里:工具栏有表情、图片、文件等入口;发送后图片会出现在会话里。 
看这里:群聊页列出「测试甲、测试乙」,说明建群已落库。 
看这里:标题带人数;气泡里有 
看这里:左窗是测试甲、右窗是测试乙;两边都能看到对方刚发的话,已读状态也出来了。 
看这里:上半是
想做一套真能聊起来的 IM 课设? IM(Instant Messaging,即时通讯)就是微信那种能发文字、图片、建群的聊天系统。 盒子IM 把私聊、群聊、离线消息、已读未读、群 @ 收进一套工程。 本机已跑通。建议 80 积分。
4 步上手
- 起中间件
:MySQL 8、Redis、MinIO(存图片/文件的对象仓库)都起来,并建好桶 box-im - 建库并起两个后端
:导入 db/im-platform.sql,再分别启动im-platform(HTTP)和im-server(消息推送) - 起前端
:进入 im-web,执行npm install && npm run dev - 两个账号互发
:注册 test1 / test2,互加好友,私聊与建群验收

test1,密码框是空的(上线前务必改掉默认口令)。能做什么
- 私聊
:文字、图片、文件、语音;对方在线即时到,离线可补 - 群聊
:拉好友建群,支持群 @ 提醒 - 已读未读
:发出去的消息能看见状态 - 网页端
:Vue 3 仿微信布局;uniapp 移动端可选,本篇只验收 Web
WebSocket:浏览器和服务器之间保持一条长连接,用来推消息,比反复轮询快。


技术栈(压缩)
后端业务:Spring Boot + MyBatis-Plus(简化数据库增删改查) 消息推送:Netty(高性能网络框架)搭 WebSocket 服务 缓存与路由:Redis(缓存,也帮忙把消息分到对应推送节点) 文件:MinIO(兼容 S3 的对象存储) 前端:Vue 3、Vite、TypeScript、Element Plus
本机部署(已跑通)
中间件与库(密码示例,公网前必改):
# MySQL / Redis 示例(有 Docker 网桥时) docker run -d --name boxim-mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:8.0 docker run -d --name boxim-redis -p 6379:6379 redis:7 # MinIO 起好后创建桶 box-im;endpoint 指向 http://127.0.0.1:9000建库名以 im-platform 的 application-dev.yml 为准(常见为 im_platform_open)。 导入脚本用 db/im-platform.sql,不要照抄 README 里写错的 im_platfrom.sql。
mvn clean package -DskipTests java -jar im-platform/target/im-platform.jar # :8888 java -jar im-server/target/im-server.jar # WS :8878 cd im-web && npm install && npm run dev # 默认 :8080本机入口:http://127.0.0.1:8080(代理到 8888)。

验收:私聊、群聊、双端
注册两个号后:互加好友 → 私聊发文字和图片 → 建群并发带 @ 的消息。 两个浏览器窗口同时在线互发,才算推送链路通。




@测试乙,系统提示已邀请入群。

im-platform(8888),下半是 im-server(8878)的 WebSocket 登录日志。实测踩坑
README 写的 SQL 名 im_platfrom.sql是错的,实际文件是im-platform.sql。npm run serve已过时,前端请用 npm run dev。只起 im-platform能登录,但收不到实时消息;im-server必须一起起。MinIO 没建 box-im桶时,发图/文件会失败,文字消息一般不受影响。配置里的库名可能是 im_platform_open,要和 yml 保持一致。
安全与合规
MySQL root/root、MinIOminioadmin、示例 JWT 密钥:公网上线前必须改协议为 MIT:再分发请保留版权注释与 LICENSE 音视频多人通话等部分能力属商业版,别当开源版功能写进需求 勿用于非法用途;截图均为测试账号(测试甲 / 测试乙) 源码包可在本帖下载区获取(已去 .git/target/node_modules,保留 LICENSE 与DEPLOY.txt)
按上文起中间件 → 起两个后端 → 起前端 → 双账号互发,一套可演示的 IM 就验收完了。
原文:https://yuanyinglight.com/2376.html















































































