# UU盲盒IM **Repository Path**: xiexiaowei2017/box-im ## Basic Information - **Project Name**: UU盲盒IM - **Description**: UU人脉圈盲盒聊天软件 - **Primary Language**: Java - **License**: MIT - **Default Branch**: main - **Homepage**: https://im.api.uurenmai.com/file - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-02-18 - **Last Updated**: 2025-11-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### **盒子IM** 1. 盒子IM是一个仿微信实现的网页版聊天软件,不依赖任何第三方收费组件。 1. 支持私聊、群聊、离线消息、发送语音、图片、文件、已读未读、群@等功能 1. 支持单人、多人音视频通话(基于原生webrtc实现,需要ssl证书) 1. uniapp端兼容app、h5、微信小程序,可与web端同时在线,并保持消息同步 1. 后端采用springboot+netty实现,网页端使用vue,移动端使用uniapp 1. 服务器支持集群化部署,每个im-server仅处理自身连接用户的消息 详细文档:https://www.yuque.com/u1475064/mufu2a #### 近期更新 发布3.0版本: - 后台管理端上线,后台管理代码仓库地址:https://gitee.com/bluexsx/box-im-admin - 框架和组件版本全面升级: jdk17、springboot3.3、node18等 - 部分界面,功能、性能优化 #### 在线体验 账号:张三/123456 李四/123456,也可以在网页端自行注册账号 网页端:https://www.boxim.online 移动安卓端:https://www.boxim.online/download/boxim.apk 移动H5端: https://www.boxim.online/h5/ ,或扫码: ![输入图片说明](%E6%88%AA%E5%9B%BE/h5%E4%BA%8C%E7%BB%B4%E7%A0%81.png) 由于微信小程序每次发布审核过于严苛和繁琐,暂时不再提供体验环境,但uniapp端依然会继续兼容小程序 #### 项目结构 | 模块 | 功能 | |-------------|----------------------------------| | im-platform | 业务平台服务,负责处理来自用户的业务请求(http) | | im-server | 消息推送服务,不依赖业务,负责将消息推送给用户(ws) | | im-client | 消息推送sdk, 其他服务可集成此sdk与im-server通信 | | im-common | 公共包,后端服务均依赖此包 | | im-web | web页面 | | im-uniapp | uniapp页面,可打包成app、h5、微信小程序 | #### 消息推送方案 ![输入图片说明](%E6%88%AA%E5%9B%BE/%E6%B6%88%E6%81%AF%E6%8E%A8%E9%80%81%E9%9B%86%E7%BE%A4%E5%8C%96.jpg) - 当消息的发送者和接收者连的不是同一个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 ``` 访问 http://localhost:8080 4.启动uniapp-h5 将im-uniapp目录导入HBuilderX,点击菜单"运行"->"开发环境-h5" 访问 http://localhost:5173