IM 即时通讯
核心定位
IM 模块为你的平台提供内置即时通讯能力——无需集成第三方 IM SDK(如环信、融云),直接在系统内实现私聊、群聊、频道推送和音视频通话。特别适合需要「平台内通讯」的场景,如电商客服、企业内部沟通、社区私信等。
一句话:让你的用户在你的平台里就能聊天,数据和体验完全可控。
解决什么问题
| 痛点 | IM 如何解决 |
|---|---|
| 第三方 IM SDK 费用高 | 自建 IM,零额外成本 |
| 用户数据存在第三方 | 聊天数据在自己的数据库 |
| 需要与业务系统打通 | 用户体系、好友关系与业务联动 |
| 音视频通话能力 | 集成 LiveKit,支持 WebRTC 通话 |
用户角色
graph LR
subgraph 角色
IM_USER["普通用户
私聊/群聊
发送文字/图片/文件/语音
音视频通话"] IM_ADMIN["IM 管理员
管理群组
配置频道
管理敏感词
查看消息记录"] end
私聊/群聊
发送文字/图片/文件/语音
音视频通话"] IM_ADMIN["IM 管理员
管理群组
配置频道
管理敏感词
查看消息记录"] end
功能架构
graph TB
subgraph 核心功能["核心功能"]
MSG2["消息中心
私聊/群聊
文字/图片/文件/语音/视频"] FRIEND["好友关系
添加/删除/黑名单"] GROUP["群组管理
创建/加入/退出/禁言"] CHANNEL["频道推送
公告/通知广播"] CALL["音视频通话
基于 LiveKit
WebRTC"] end subgraph 辅助功能 EMOJI["表情管理"] SENSITIVE["敏感词过滤"] end subgraph 通信层["通信层"] WS["WebSocket 实时通信
local / redis / rocketmq
/ kafka / rabbitmq"] end 核心功能 --> 通信层 辅助功能 --> 核心功能
私聊/群聊
文字/图片/文件/语音/视频"] FRIEND["好友关系
添加/删除/黑名单"] GROUP["群组管理
创建/加入/退出/禁言"] CHANNEL["频道推送
公告/通知广播"] CALL["音视频通话
基于 LiveKit
WebRTC"] end subgraph 辅助功能 EMOJI["表情管理"] SENSITIVE["敏感词过滤"] end subgraph 通信层["通信层"] WS["WebSocket 实时通信
local / redis / rocketmq
/ kafka / rabbitmq"] end 核心功能 --> 通信层 辅助功能 --> 核心功能
核心 ER 图
erDiagram
IM_USER ||--o{ IM_MESSAGE : "发送"
IM_USER ||--o{ IM_FRIEND : "好友关系"
IM_USER ||--o{ IM_GROUP_MEMBER : "群成员"
IM_GROUP ||--o{ IM_GROUP_MEMBER : "包含"
IM_GROUP ||--o{ IM_MESSAGE : "群消息"
IM_CHANNEL ||--o{ IM_CHANNEL_MESSAGE : "频道消息"
IM_CHANNEL ||--o{ IM_CHANNEL_MEMBER : "频道成员"
IM_MESSAGE {
bigint id PK
bigint from_user_id FK "发送者"
bigint to_user_id FK "接收者"
bigint group_id FK "群组"
tinyint type "消息类型"
text content "消息内容"
datetime create_time "发送时间"
}
IM_GROUP {
bigint id PK
varchar name "群名称"
bigint owner_user_id FK "群主"
tinyint status "状态"
}
IM_CHANNEL {
bigint id PK
varchar name "频道名称"
tinyint type "频道类型"
}
数据库表分组
| 分组 | 表数量 | 说明 |
|---|---|---|
| 消息中心 | 2 表 | 消息记录、消息会话 |
| 好友关系 | 2 表 | 好友、好友申请 |
| 群组管理 | 3 表 | 群组、群成员、群公告 |
| 频道推送 | 3 表 | 频道、频道成员、频道消息 |
| 音视频通话 | 2 表 | 通话记录、通话参与人 |
| 其他 | 4 表 | 表情、敏感词等 |
WebSocket 通信模式
graph TB
subgraph 发送模式["消息发送模式(可切换)"]
LOCAL["local
单机模式
开发调试用"] REDIS3["redis
Redis 广播
小规模集群"] ROCKET2["rocketmq
RocketMQ
高吞吐"] KAFKA2["kafka
Kafka
大规模"] RABBIT2["rabbitmq
RabbitMQ
企业级"] end
单机模式
开发调试用"] REDIS3["redis
Redis 广播
小规模集群"] ROCKET2["rocketmq
RocketMQ
高吞吐"] KAFKA2["kafka
Kafka
大规模"] RABBIT2["rabbitmq
RabbitMQ
企业级"] end
应用场景
| 场景 | 使用方式 |
|---|---|
| 电商客服 | 买家 ↔ 商家客服私聊 |
| 企业内部通讯 | 员工群聊、部门频道 |
| 社区私信 | 用户之间私聊 |
| 在线教育 | 学生 ↔ 老师、课程群聊 + 音视频 |
| 医疗咨询 | 患者 ↔ 医生私聊 + 音视频问诊 |