想做一套真能聊起来的 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 就验收完了。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END














暂无评论内容