项目源码|盒子IM 仿微信即时通讯系统|Spring Boot + Netty + Vue 3

项目源码|盒子IM 仿微信即时通讯系统|Spring Boot + Netty + Vue 3-远影归灯
盒子IM 源码包
此内容为付费资源,请付费后查看
80积分
付费资源

想做一套真能聊起来的 IM 课设? IM(Instant Messaging,即时通讯)就是微信那种能发文字、图片、建群的聊天系统。 盒子IM 把私聊、群聊、离线消息、已读未读、群 @ 收进一套工程。 本机已跑通。建议 80 积分。

4 步上手

  1. 起中间件:MySQL 8、Redis、MinIO(存图片/文件的对象仓库)都起来,并建好桶 box-im
  2. 建库并起两个后端:导入 db/im-platform.sql,再分别启动 im-platform(HTTP)和 im-server(消息推送)
  3. 起前端:进入 im-web,执行 npm install && npm run dev
  4. 两个账号互发:注册 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 登录日志。

实测踩坑

  1. README 写的 SQL 名 im_platfrom.sql 是错的,实际文件是 im-platform.sql。
  2. npm run serve 已过时,前端请用 npm run dev。
  3. 只起 im-platform 能登录,但收不到实时消息;im-server 必须一起起。
  4. MinIO 没建 box-im 桶时,发图/文件会失败,文字消息一般不受影响。
  5. 配置里的库名可能是 im_platform_open,要和 yml 保持一致。

安全与合规

  • MySQL root/root、MinIO minioadmin、示例 JWT 密钥:公网上线前必须改
  • 协议为 MIT:再分发请保留版权注释与 LICENSE
  • 音视频多人通话等部分能力属商业版,别当开源版功能写进需求
  • 勿用于非法用途;截图均为测试账号(测试甲 / 测试乙)
  • 源码包可在本帖下载区获取(已去 .git / target / node_modules,保留 LICENSE 与 DEPLOY.txt)

按上文起中间件 → 起两个后端 → 起前端 → 双账号互发,一套可演示的 IM 就验收完了。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容