核心定位

IM 模块为你的平台提供内置即时通讯能力——无需集成第三方 IM SDK(如环信、融云),直接在系统内实现私聊、群聊、频道推送和音视频通话。特别适合需要「平台内通讯」的场景,如电商客服、企业内部沟通、社区私信等。

一句话:让你的用户在你的平台里就能聊天,数据和体验完全可控。


解决什么问题

痛点IM 如何解决
第三方 IM SDK 费用高自建 IM,零额外成本
用户数据存在第三方聊天数据在自己的数据库
需要与业务系统打通用户体系、好友关系与业务联动
音视频通话能力集成 LiveKit,支持 WebRTC 通话

用户角色

graph LR subgraph 角色 IM_USER["普通用户
私聊/群聊
发送文字/图片/文件/语音
音视频通话"] 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 核心功能 --> 通信层 辅助功能 --> 核心功能

核心 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

应用场景

场景使用方式
电商客服买家 ↔ 商家客服私聊
企业内部通讯员工群聊、部门频道
社区私信用户之间私聊
在线教育学生 ↔ 老师、课程群聊 + 音视频
医疗咨询患者 ↔ 医生私聊 + 音视频问诊
docs