音视频聊天项目产品系统

我要开发同款
proginn19395020702026年09月14日
3阅读

技术信息

语言技术
KafkagormJavaScriptVueGo
系统类型
Android应用iOS应用小程序轻应用
行业分类
社交

作品详情

行业场景

当前即时通讯是社交、客户沟通、业务协同的基础能力。市面上通用 IM(微信、QQ、Discord 等)存在**能力不可定制、数据不归自己掌控、业务功能无法深度融合**的问题。
如果是面向自有业务(你的场景:社交 / 直播 / 商城配套 IM),第三方 IMSDK 存在以下限制:

1. 数据存储在第三方服务商,敏感用户聊天数据无法私有化部署;
2. 自定义业务逻辑受限:红包、音视频通话、自定义消息、房间 / 群组权限、和你现有会员 / 金币系统打通难度高;
3. 成本:用户量大之后,第三方 IM 按长连接 / 消息条数计费,长期费用高;
4. 外部平台风控、规则不可控,容易出现账号封禁、接口限流,影响业务连续性。

功能介绍

1. 用户体系与在线状态
- 用户注册、登录、token 鉴权;读取自有用户中心信息;
- 在线 / 离线状态管理,Redis 维护在线状态,多端登录互踢 / 同端共存配置;
- 用户资料查看(头像、昵称、个人信息)。
2. 单聊(点对点聊天)
- 文字消息、表情、图片、文件发送;
- 消息时序、消息 ID 幂等、消息已读、未读计数;
- 消息撤回、消息删除(本地 / 服务端删除);
- 离线消息:用户离线时消息持久化入库,上线后自动拉取离线消息;
- 多端消息漫游:App、H5 WebView 多端同步聊天记录。
3. 群组聊天
- 创建群组、修改群名称、群公告、群头像;
- 邀请好友入群、踢出成员、退出群组;
- 群成员权限管理(群主、管理员、普通成员);
- 群消息广播,支持 @成员,群未读统计。
4. 自定义业务消息
- 红包消息(发红包、拆红包、红包状态推送);
- 系统通知消息:订单通知、公告、好友申请、通话通知;
- 呼叫信令消息(音视频呼叫、挂断、拒绝、忙线信令)。

二、音视频通话模块(WebRTC)

1. 一对一音视频呼叫,发起呼叫、响铃、接听、挂断、拒绝通话;
2. 信令通过 IM 通道传输,媒体流通过 Coturn TURN 服务穿透 NAT;
3. 通话状态同步(通话中、已挂断、对方忙线);
4. H5 WebView 与 App 互通通话,适配 Uniapp 客户端。

三、好友关系模块

1. 发送好友申请、同意 / 拒绝好友申请;
2. 好友列表查询、删除好友、好友备注;
3. 黑名单功能:拉黑用户后,无法接收对方消息、呼叫。

项目实现

采用微服务化分布式架构,拆分业务模块,各服务独立部署,通过 ETcd 做服务注册发现,Kafka 实现消息异步投递,Redis 做高速缓存,MySQL 持久化业务数据。
1. 接入层:WebSocket 网关服务,管理客户端长连接(Uniapp APP、H5 WebView),维持心跳、鉴权、消息分发;多实例部署,P2C 负载均衡。
2. 业务 RPC 层(go-zero):user.rpc(用户 / 好友 / 群组)、im.rpc(消息管理)、call.rpc(WebRTC 音视频信令)、wallet.rpc(红包 / 金币)。
3. 中间件层
- MySQL:存储用户、好友、群组、聊天记录、红包流水等持久化数据;
- Redis:维护用户在线状态、用户信息缓存、红包临时数据、未读消息计数;
- ETCD:go-zero RPC 服务注册与发现,实现服务自动感知;
- Kafka:消息异步投递、离线消息写入、消息解耦削峰;
- Coturn:WebRTC 音视频 NAT 穿透,处理媒体流转发。
4. 客户端层:Uniapp 开发 APP,内置 WebView 承载 H5 页面;H5 负责 WebRTC 音视频渲染与信令交互。
> 通信流程:客户端 WebSocket 连接网关 → 鉴权 → 消息 / 信令转发至对应 RPC 服务 → 业务处理,通过 Kafka 异步落库 + 推送目标客户端。

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论