1 Star 0 Fork 511

huawenyao/盒子IM

forked from blue/盒子IM 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

盒子IM

MIT协议 star star

  1. 盒子IM是一个仿微信实现的网页版聊天软件,不依赖任何第三方收费组件。
  2. 支持私聊、群聊、离线消息、发送语音、图片、文件、已读未读、群@等功能
  3. 支持单人、多人音视频通话(基于原生webrtc实现,需要ssl证书)
  4. uniapp端兼容app、h5、微信小程序,可与web端同时在线,并保持消息同步
  5. 后端采用springboot+netty实现,网页端使用vue,移动端使用uniapp
  6. 服务器支持集群化部署,每个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/ ,或扫码:

输入图片说明

由于微信小程序每次发布审核过于严苛和繁琐,暂时不再提供体验环境,但uniapp端依然会继续兼容小程序

项目结构

模块 功能
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

访问 http://localhost:8080

4.启动uniapp-h5 将im-uniapp目录导入HBuilderX,点击菜单"运行"->"开发环境-h5" 访问 http://localhost:5173

接入消息推送

盒子IM对消息推送模块进行了剥离和封装, 如果您不关心盒子IM的业务功能,只需要一个可以将消息推送至前端的服务,则只需要启动im-server即可 然后参考以下文档进行接入:
https://www.yuque.com/u1475064/mufu2a/vn5u10ephxh9sau8

界面截图

私聊: 输入图片说明

群聊: 输入图片说明

群通话: 输入图片说明

好友列表: 输入图片说明

群列表: 输入图片说明

移动端APP: 输入图片说明

输入图片说明

加入交流群

1群目前已满员,扫码进入2群:

输入图片说明

欢迎进群与小伙们一起交流, 申请加群前请务必先star哦

点下star吧

如果项目对您有帮助,请点亮右上方的star,支持一下作者吧!

说明几点

  1. 本系统允许用于商业用途,且不收费(自愿投币)。但切记不要用于任何非法用途 ,本软件作者不会为此承担任何责任
  2. 基于本系统二次开发后再次开源的项目,请注明引用出处,以避免引发不必要的误会
  3. 为方便管理,要pr的同学请将代码提交到v_3.0.0分支,作者会在功能上线时合并到master分支
  4. 作者目前不打算接项目,如果能接受1k/天以上的报价,也可以聊聊
MIT License Copyright (c) 2022 blue Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

盒子IM是一个仿微信的聊天工具。后端采用springboot+netty实现,web端使用vue,移动端使用uniapp,支持私聊、群聊、离线消息、发送图片、文件、语音、emoji表情、视频聊天等功能。 展开 收起
Java
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/huawenyao/box-im.git
git@gitee.com:huawenyao/box-im.git
huawenyao
box-im
盒子IM
master

搜索帮助

A270a887 8829481 3d7a4017 8829481